You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular:FeatureModule导入路由模块而非反向的原因及方案对比

Angular模块拆分方案疑问

第一种方案

这是Angular默认采用的模块声明方式:

Feature1Module

@NgModule({
  imports: [CommonModule, Feature1RoutingModule],
  declarations: [Feature1Component],
  exports: [Feature1Component],
})
export class Feature1Module {}

Feature1RoutingModule

@NgModule({
  imports: [RouterModule.forChild([
  { path: 'create1', component: Feature1Component }
])],
  exports: [RouterModule]
})
export class Feature1RoutingModule {}

我的顾虑是:如果要复用Feature1Component,必须导入Feature1Module,但这样会同时引入路由配置,导致其他地方导入该模块时,'create1'路径会被启用。

请问这种拆分Feature1RoutingModule与Feature1Module的方式有何价值?

第二种方案

我更倾向于采用反向导入的方式:

Feature1Module

@NgModule({
  imports: [CommonModule],
  declarations: [Feature1Component],
  exports: [Feature1Component],
})
export class Feature1Module {}

Feature1RoutingModule

@NgModule({
  imports: [
Feature1Module,
RouterModule.forChild([
  { path: 'create1', component: Feature1Component }
])],
  exports: [RouterModule]
})
export class Feature1RoutingModule {}

是否存在必须使用第一种方案而非第二种的理由?


内容的提问来源于stack exchange,提问作者roll

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:32:27