【发布时间】:2022-07-20 21:26:49
【问题描述】:
我目前有一个 SharedModule,每个其他模块都会导入它,这样每个模块都会显式导入它,但是由于某些模块会导入其他模块,因此它们也会隐式导入 SharedModule。我想知道这是否是捆绑包大小的问题,还是 Ivy 只是做了一些魔术,以至于这根本不是问题?
【问题讨论】:
标签: angular typescript
我目前有一个 SharedModule,每个其他模块都会导入它,这样每个模块都会显式导入它,但是由于某些模块会导入其他模块,因此它们也会隐式导入 SharedModule。我想知道这是否是捆绑包大小的问题,还是 Ivy 只是做了一些魔术,以至于这根本不是问题?
【问题讨论】:
标签: angular typescript
来自 Angular 文档:
如果我两次导入同一个模块会怎样?
这不是问题。当三个模块都导入 Module 'A' 时,Angular 会评估 Module 'A' 一次,这是它第一次遇到它,并且不会再这样做。
在导入的 NgModules 层次结构中出现的任何级别 A 都是如此。当模块'B'导入模块'A',模块'C'导入'B',模块'D'导入[C,B,A],然后'D'触发'C'的评估,这触发评估'B',它评估'A'。当 Angular 到达“D”中的“B”和“A”时,它们已经被缓存并准备好了。
Angular 不喜欢带有循环引用的 NgModules,所以不要让 Module 'A' 导入 Module 'B',它会导入 Module 'A'。
https://angular.io/guide/ngmodule-faq#what-if-i-import-the-same-module-twice
【讨论】: