使用ui-router-ng2而不是新的 Angular2 路由器有什么好处和坏处?过去我在 Angular 1.x 中使用 ui-router 而不是使用 ngRoute,因为我需要更好地支持嵌套状态/路由。
那么现在,Angular2 呢?我想听听你的意见,这样我就可以评估这两个机会。
此外,在谷歌上搜索和搜索我发现了我不知道的ngrx/router 。你能告诉我 Angular2 的内置路由器、Angular2 的新ui-router和ngrx 路由器有什么区别吗?
使用ui-router-ng2而不是新的 Angular2 路由器有什么好处和坏处?过去我在 Angular 1.x 中使用 ui-router 而不是使用 ngRoute,因为我需要更好地支持嵌套状态/路由。
那么现在,Angular2 呢?我想听听你的意见,这样我就可以评估这两个机会。
此外,在谷歌上搜索和搜索我发现了我不知道的ngrx/router 。你能告诉我 Angular2 的内置路由器、Angular2 的新ui-router和ngrx 路由器有什么区别吗?
NGRX 路由r 文档
ngrx 路由器已弃用!有从 ngrx 路由器到标准 Angular2 路由器的迁移策略。
Angular2 路由器 文档
Angular2 路由器具有几乎所有的 UI 路由器功能。
NG2 UI-路由器 文档
来自 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 几乎是一样的。另外需要说的是,它支持大多数常见功能,例如通过路由共享静态/动态数据、嵌套视图等。
Angular2 Router 充分利用了 UI-router 的经验并实现了它。如果您需要使用 AngularJS UI-router 轻松快速地将代码库迁移到 Angular2,您可以尝试 Ng2 UI-router,否则,我认为 Angular2 Router 最适合。即使您决定使用 NG2 UI-router,请检查所有优缺点,目前我觉得社区将选择 Angular 团队的标准解决方案,这意味着更好的支持。