Angular2 路由器 VS ui-router-ng2 VS ngrx 路由器
Angular2 router VS ui-router-ng2 VS ngrx router
使用 ui-router-ng2 而不是新的 Angular2 路由器有什么好处和坏处?过去我使用 ui-router 和 Angular 1.x 而不是使用 ngRoute,因为我需要更好地支持嵌套 states/routes.
那么现在,Angular2 呢?我想听听您的意见,以便我评估这两个机会。
此外,在 Google 上搜索和搜索我发现 ngrx/router,我不知道。
你能告诉我 Angular2 的 builtin router 和新的 ui-router 之间有什么区别吗 Angular2 和 ngrx 路由器?
一般信息
NGRX 路线r docs
ngrx 路由器已弃用!从 ngrx 路由器到标准 Angular2 路由器有 migration strategy。
Angular2 路由器 docs
- Angular 团队的默认解决方案
- 灵感来自 UI-router from AngularJS
- Built 组件
Angular2 路由器具有几乎所有 UI-路由器功能。
NG2 UI-路由器 docs
来自 AngularJS 的著名 UI-路由器已更新为 Angular2。从已知的优点 - 使从 AngularJS UI-router 到 ng2 UI-router.
的更新更顺畅
比较
让我们比较一下 UI-router 两个版本与 Angular2 Router.
的语法
AngularJS UI-路由器 :
app.config(function($stateProvider){
$stateProvider.state('home', {
url: '/home',
templateUrl: 'home.html',
controller: 'HomeCtrl'
})
});
Angular2 UI-路由器 :
export let state1: Ng2StateDeclaration = {
name: 'home',
component: HomeComponent,
url: '/home'
}
@NgModule({
imports: [
SharedModule,
UIRouterModule.forChild({ states: [home] })
],
declarations: [HomeComponent]
})
export class MyModule {}
Angular2 路由器 :
(更新: 属性 - name
在 V3-alpha7 之后被删除了。因为它在延迟加载路由时不起作用。)
import {
RouteConfig,
Route
} from 'angular2/router';
import {HomeComponent} from './components/home';
@Component({})
@RouteConfig([
new Route({
path: '/home',
component: HomeComponent,
name: 'Home' // Deprecated property, works until v3-alpha7
})
])
export class App {...}
我们可以看到,一般来说,Angular2 Router 是差不多的。另外需要说明的是,它支持大多数常见功能,例如 static/dynamic 通过路由、嵌套视图等共享数据
- 相同的定位策略(路径和哈希)
- 相似的路线定义
- 类似服务:
- $state.go 和 Router.navigate
- $stateParams 和 RouteParams
- $state.current.data 和 RouteData
- 类似指令
- ui-视图和路由器插座
- ui-sref 和 routerLink
结论
Angular2 路由器充分利用了 UI-路由器的经验并加以实施。如果您需要使用 AngularJS UI-router 轻松地将代码库快速顺利地迁移到 Angular2,您可以尝试 Ng2 UI-router,否则,我认为 Angular2 路由器最合适。即使您决定使用 NG2 UI-router,检查所有优缺点,目前我觉得社区将从 Angular 团队中选择一个标准解决方案,这意味着更好的支持。
使用 ui-router-ng2 而不是新的 Angular2 路由器有什么好处和坏处?过去我使用 ui-router 和 Angular 1.x 而不是使用 ngRoute,因为我需要更好地支持嵌套 states/routes.
那么现在,Angular2 呢?我想听听您的意见,以便我评估这两个机会。
此外,在 Google 上搜索和搜索我发现 ngrx/router,我不知道。 你能告诉我 Angular2 的 builtin router 和新的 ui-router 之间有什么区别吗 Angular2 和 ngrx 路由器?
一般信息
NGRX 路线r docs
ngrx 路由器已弃用!从 ngrx 路由器到标准 Angular2 路由器有 migration strategy。
Angular2 路由器 docs
- Angular 团队的默认解决方案
- 灵感来自 UI-router from AngularJS
- Built 组件
Angular2 路由器具有几乎所有 UI-路由器功能。
NG2 UI-路由器 docs
来自 AngularJS 的著名 UI-路由器已更新为 Angular2。从已知的优点 - 使从 AngularJS UI-router 到 ng2 UI-router.
的更新更顺畅比较
让我们比较一下 UI-router 两个版本与 Angular2 Router.
的语法AngularJS UI-路由器 :
app.config(function($stateProvider){
$stateProvider.state('home', {
url: '/home',
templateUrl: 'home.html',
controller: 'HomeCtrl'
})
});
Angular2 UI-路由器 :
export let state1: Ng2StateDeclaration = {
name: 'home',
component: HomeComponent,
url: '/home'
}
@NgModule({
imports: [
SharedModule,
UIRouterModule.forChild({ states: [home] })
],
declarations: [HomeComponent]
})
export class MyModule {}
Angular2 路由器 :
(更新: 属性 - name
在 V3-alpha7 之后被删除了。因为它在延迟加载路由时不起作用。)
import {
RouteConfig,
Route
} from 'angular2/router';
import {HomeComponent} from './components/home';
@Component({})
@RouteConfig([
new Route({
path: '/home',
component: HomeComponent,
name: 'Home' // Deprecated property, works until v3-alpha7
})
])
export class App {...}
我们可以看到,一般来说,Angular2 Router 是差不多的。另外需要说明的是,它支持大多数常见功能,例如 static/dynamic 通过路由、嵌套视图等共享数据
- 相同的定位策略(路径和哈希)
- 相似的路线定义
- 类似服务:
- $state.go 和 Router.navigate
- $stateParams 和 RouteParams
- $state.current.data 和 RouteData
- 类似指令
- ui-视图和路由器插座
- ui-sref 和 routerLink
结论
Angular2 路由器充分利用了 UI-路由器的经验并加以实施。如果您需要使用 AngularJS UI-router 轻松地将代码库快速顺利地迁移到 Angular2,您可以尝试 Ng2 UI-router,否则,我认为 Angular2 路由器最合适。即使您决定使用 NG2 UI-router,检查所有优缺点,目前我觉得社区将从 Angular 团队中选择一个标准解决方案,这意味着更好的支持。