Angular Dart中的模块化路线设计支持独立开发的功能集?

时间:2014-01-30 16:24:05

标签: dart angular-routing angular-dart

[更新了以重点关注问题]。 AngularDart在很多方面都很好地支持模块化应用程序设计路线设计也是如此吗?即,

问题:某个应用可以有多个RouteInitializer吗?例如,以下内容是否可行:

class MyAppModule extends Module {
  MyAppModule() { ...
    type(RouteInitializer, 
       // Currently implementedBy takes only one RouteInitializer? 
       // Here we propose, e.g., to allow a list.
       implementedBy: 
         [MyAppRouteInitializerForFeatureSetA,
         MyAppRouteInitializerForFeatureSetB,
         MyAppRouteInitializerForFeatureSetC,
         ]);
    ...
  }
}

用例:我正在考虑让我的一些学生参与同一个AngularDart项目,但是(主要是)相互排斥的功能集。理想情况下,我希望他们独立工作(一旦达成“顶级”路由URL前缀)。在这种情况下,他们最终会拥有自己的RouteInitializer。能够在项目子文件夹中“删除”,集成时间,而不是将路由初始化复制粘贴到单个类文件中,这将是很好的。


[问题的原始版本](假设界面名称为RouteInitializer,而不是RouterInitializer,则给出的印象可以定义多个。)

  1. 路线设计也是如此?即,
  2. 可以将多个Router个实例与Angular Dart应用相关联? (我想只有一个。)
  3. 某个应用可以有多个RouteInitializer吗? (假设界面名称为RouteInitializer,而不是RouterInitializer,则给出的印象可以定义多个。
  4. 如果允许多个RouteInitializer,那么addRoute name参数的范围是多少?
  5. 编辑:实际上最后一个问题在分层路由的上下文中具有自己的优点,因此我将其考虑在内:angulardart-namespace-of-route-names-hierarchical-too

1 个答案:

答案 0 :(得分:2)

正如您所指出的那样,拥有多个RouteInitializer是很复杂的。

从技术上讲,你不需要帮助形成角度来做到这一点。

<强> my_routes.dart

import 'foo.dart' as foo;
import 'bar.dart' as bar;

myRouteInitializer(router, views) {
  views.configure({
    'foo': foo.configureFooRoutes(),
    'bar': bar.configureBarRoutes()
  });
}

foo.dart

library foo;

import '';

configureFooRoutes(views) => ngRoute(
    path: '/foo',
    mount: ...);

bar.dart

library bar;

import '';

configureBarRoutes(views) => ngRoute(
    path: '/bar',
    mount: ...);

通过这种方式,您的学生可以独立工作。