角度路由器配置模式:路由器模块与路由常量

时间:2019-09-20 12:45:18

标签: angular angular-routing code-design

我刚刚与一家工作学院进行了有关如何组织要素路由配置的讨论。

我们讨论了两种方法。

方法1:单独的路由模块

第一种方法是创建一个单独的feature-a-routing.module.ts,其中包含所有路由内容并将其导入FeatureAModule

// feature-a-routing.module.ts
const routes: Routes = [
    {
        path: '/',
        component: HelloComponent,
    }
];

@NgModule({
    imports: [RouterModule.forChild(routes)],
    exports: [RouterModule]
})
export class FeatureARoutingModule {}
// feature-a.module.ts
@NgModule({
    declarations: [
        HelloComponent,
        NeugeschaeftContainerComponent,
        ProduktauswahlNeugeschaeftComponent
    ],
    providers: [],
    imports: [CommonModule, FeatureARoutingModule]
})
export class FeatureAModule {}

方法2:不变的单独路线

第二种方法是仅在单独的文件中定义routes常量:

// feature-a-routes.ts
export const featureARoutes: Routes = [
    {
        path: '/',
        component: HelloComponent,
    }
];
// feature-a.module.ts
@NgModule({
    declarations: [
        HelloComponent,
        NeugeschaeftContainerComponent,
        ProduktauswahlNeugeschaeftComponent
    ],
    providers: [],
    imports: [CommonModule, RouterModule.forChild(featureARoutes)]
})
export class FeatureAModule {}

讨论

第一种方法似乎可以更好地分离关注点。这是我唯一看到的区别。 第一种方法还有其他好处,可能涉及测试,优化,甚至有警告吗? 第二种方法的好处是什么?

1 个答案:

答案 0 :(得分:0)

除了第一种方法被标记为良好实践之外,因为NgModule是Angular的主要功能之一,在这种情况下选择它根本没有任何好处。它源于惯例。

我更喜欢第二种方法以提高可读性,因为该模块无用(只需导入内容即可将其导出。)