角度:每个组件一个模块:反模式?

时间:2019-04-26 03:03:49

标签: angularjs angular performance ng-modules

因此,我遇到了一种实践,人们将为具有服务依赖性的每个组件创建一个模块。这样,当有人要使用给定的组件时,他们不必阅读代码即可查看要向给定的模块添加哪些提供程序。这是反模式吗?会导致性能问题或其他原因吗?

对于给定模块中应包含多少个组件/指令/提供者/等,是否存在一些有关下限/上限的建议指南?是否已经在一个视图中测试了具有数百个模块的angular / angularJs生态系统?与仅将常规组件全部捆绑在20ish模块中相比呢?

3 个答案:

答案 0 :(得分:1)

通常,Angular和指南关于它们应包含的内容以及应导入哪些模块的指南有所不同:

  • 窗口小部件模块-主要包含UI组件,但不包含任何服务。通过功能模块导入。
  • 功能模块-包含特定于域的专用组件。由AppModule导入。
  • 服务模块-专门包含服务。由AppModule导入。
  • 路由模块-专用功能模块,是路由的目标。
  • 路由模块-包含导航路线和解析器/防护服务。

模块可以依赖于其他模块。例如,可以将Widgets模块与Services模块一起使用,其中AppModule导入ServicesModule,FeatureModule导入WidgetsModule。 BrowserModule / CommonModule是此模式的一个示例。 RouterModule.forRoot()/ RouterModule.forChild()也是如此。

我想说每个组件只有一个模块是过分的。很难以任何有意义的方式将共同的功能组织和分组在一起并利用服务。当您为单个模块导入的位数达到两位数时,它很容易变得笨拙。

答案 1 :(得分:0)

如果您的应用程序相对较小,则可以膨胀单个模块。一旦您的应用开始变得相对较大,就可以开始延迟加载模块,这样您的用户就不必在应用启动时就下载整个构建。将相关功能分组到模块中也使维护变得更容易。

因此,对于规模较小的网站,单个模块就可以了,但是随着您的应用的增长,开始将组件和服务重构为模块是很有意义的。

答案 2 :(得分:0)

实际上,angular总是希望您拥有基本模块-

  • 功能模块,共享模块,路由模块,核心模块,

但是,如果应用程序很大,则最好对模块进行延迟加载,对于每个组件都具有模块是最好的选择,这会提高应用程序速度,并随浏览器加载所需的组件。