Jak*_*ätt 6 angular-material angular-cli es6-modules ng-modules angular
我正在使用一个相当大的Angular应用程序,当前在共享模块中拥有所有共享组件和模块,只要需要导出任何内容,我都会导入该模块。
但是,我有一些小的功能模块,它们仅需要共享模块中的很少的模块,然后我是否应该增加体系结构的复杂性和模块化,以便仅导入所需的模块,即使它们已导入其他位置?
Angular 文档指出已缓存已导入到另一个模块中的导入模块,这不是问题,但这意味着,应用程序变慢/变大了吗?
示例:模块1导入A,B,C。模块2导入A,C,D。
如果我在两个模块中都导入了A,B,C,D(例如通过共享模块),会不会导致性能损失?
也许。这取决于您的应用程序的结构。
如果您不使用 lazy-loading,则可以遵循文档,并且不会重复任何代码。使用chunksangular-cli的原始配置创建的默认设置scripts.bundle.js将为您的模块生成一个(在其他大块中用于其他填充)。
现在,如果您正在使用 lazy-loading(正如您所说的那样,在问题注释中),它将chunk为每个延迟加载的模块创建一个,并且应谨慎进行。
angular-cli用于webpack创建这些块,并在发表本文时,它将在需要它们的每个块上复制导入的模块(和第三方库!)。
这是一个已知问题,已经部分解决,但是它正在等待webpack 实施解决该问题所需的功能。
建议:
SharedModule为每个懒惰的模块创建一个,并仅导入/声明该模块所需的内容,并仅使用this SharedModule。不要SharedModule从延迟加载的模块中导入主应用程序。
这仍将复制不同块所需的模块,但至少不会在不需要它们的地方添加不必要的模块。
并注意上面链接的问题,以便您知道何时可以避免此变通办法。
干杯!
| 归档时间: |
|
| 查看次数: |
1183 次 |
| 最近记录: |