【发布时间】:2018-03-29 22:54:03
【问题描述】:
我正在使用一个相当大的 Angular 应用程序,并且目前在一个共享模块中拥有所有共享组件和模块,当我需要它导出的任何内容时,我都会导入它。
但是,我有一些小的功能模块,它们只需要共享模块中的极少数模块,然后我是否应该增加架构的复杂性和模块化以便只导入我需要的模块,即使它们是在其他地方导入的?
Angular docs state 已经在另一个模块中导入的导入模块被缓存并且没有问题,但这意味着什么,应用程序会变得更慢/更大吗?
示例: 模块 1 导入 A、B、C。 模块 2 导入 A、C、D。
如果我在两个模块中导入 A、B、C、D(例如通过共享模块),是否会降低性能?
【问题讨论】:
-
您失去了将应用程序拆分为延迟加载部分的能力。理想情况下,您会为每个功能创建一个模块,然后将该功能模块导入您需要的地方。然后,当您以后想要改善初始加载时间时,您只需延迟加载初始加载中显示的应用程序部分中不需要的模块,其他一切都很容易就位。
-
我有一堆导入共享模块的延迟加载模块。但是,如果我只导入 A、B、C 而不是 D,这些会变得更快吗?即使 D 之前已经在另一个模块中加载过?
-
没有必要关心在多个地方多次导入模块,Angular 会按照您引用的文档中提到的那样处理。主要问题是当你加载大模块时,即使它只实际使用了一小部分。
-
好的,到此结束。注意惰性模块,只导入需要的东西,在非惰性模块中,“桶”模块就可以了。
-
我认为每个功能都应该有一个模块。它通常会以意想不到的方式改变应该延迟加载的内容,然后更改模块结构可能非常麻烦。然后,您始终可以从较小的功能模块中构建更粗粒度的功能模块,但始终尝试尽可能具体地导入。
标签: angular angular-material angular-cli es6-modules ng-modules