Angular 4 - 内存中的多个模块实例

时间:2017-11-01 14:56:48

标签: angular

我们有一个使用Angular 4的大型lazy loading应用程序以及preloadAllModules的预加载策略。我们正在使用Angular CLI

在查看Chrome检查器中的内存问题时,我注意到我们到处都有多个模块实例。

enter image description here

如果我正在阅读此权利,我们会有TranslateModuleHttpModule等83个实例...

我唯一能想到的是每个lazy loaded模块都有自己的root,需要为该bundle创建自己的模块吗?

是否可以摆脱所有这些实例,或者它是如何工作的?

2 个答案:

答案 0 :(得分:2)

您应该将所有这些共享模块放入一个核心模块,该核心模块只加载一次并且仅由应用程序模块导入

答案 1 :(得分:2)

  

是否有可能摆脱所有这些实例,或者就是这样   它有效吗?

是的,只需将它们导入根AppModule即可。但是,虽然您可以避免将HttModule放入每个已加载的模块中,并且只能将其导入根AppModule一次,但您无法避免RouterModule的重复应该像RouterModule.forChild(routes)一样使用HttpModule 1}}。

重复发生是因为每个延迟加载的模块都有自己的注入器,它有自己的所有导入模块的实例。因此,如果您有83个延迟加载的模块,并且每个模块导入RouterModulenagios-common,则每个导入模块将有83个实例。

欲了解更多信息,请阅读: