应用程序正在生成我的延迟加载模块的一部分,前缀为 default ~ .. 甚至在它被调用之前

Posted

技术标签:

【中文标题】应用程序正在生成我的延迟加载模块的一部分,前缀为 default ~ .. 甚至在它被调用之前【英文标题】:Application is generating a chunk of my lazy load module with prefix default ~ .. even before its getting invoked 【发布时间】:2019-09-30 03:17:03 【问题描述】:

我在我的 Angular 应用程序中实现了延迟加载(使用 CLI 7.3.4)

它编译成功,但是当我路由到一个延迟加载的模块(比如 module1 路径)时,它又加载了一个块,实际上是另一个延迟加载的模块(Module2)路径。

块名称: "../default~lazy-load-modules-module1-module1-module~lazy-load-modules-module2-mo~be6d77c5.js"

我无法理解为什么会生成这个默认值 ~。

我希望仅在调用其组件之一时加载模块。

【问题讨论】:

你的代码在哪里? 请分享一些代码,我认为你在这里遗漏了一些东西。 您好,感谢您的回复。我正在尝试创建一个堆栈闪电战,因为我无法共享我的代码。但不幸的是,我做不到。我发现了我的问题的副本,但尚未得到回答。请帮我回答这个question。它会帮助我。问候,阿基尔 您好,我尝试使用 namedChunks 进行产品构建:true。 prod 构建后生成的 js 文件:default~lazy-load-modules-module1-module1-module-ngfactory~lazy-load-modules-module2~f905bd40.e57cb63c897b03f07599.js default~lazy-load-modules-module2-module2-module- ngfactory~lazy-load-modules-m~e4585478.7b99f3d4bf5e27b58bfd.js 和 3 个单独的 js 文件用于 3 个单独的模块。 PS:我有一个共享模块,它只在 3 个模块中的 2 个模块中导入,这是生成默认值的原因吗? 【参考方案1】:

它只是意味着生成的块属于模块1和模块2。

我相信你有一个共享模块。如果是,那么这是该模块的一部分。

如果您想了解更多信息,请告诉我。

【讨论】:

有什么办法可以预防吗? @NikhilYadav:下面是答案细节。在这种情况下,我没有使用任何共享模块。【参考方案2】:

这个评论是w.r.t。角版11.2.1...

这是可以在angular.json 文件中配置的默认功能(设置为true)(commonChunk: false,在aot 键下方添加此属性)。此外,我看到保持默认值的一大好处(改进捆绑包大小以在网络上加载和构建时间)。下面是一个演示:-

有一个共同的块:-

没有共同的块:-

Outro:我可以说,使用第二种方法,公共模块将与每个单独的延迟加载模块合并。如果那是您正在寻找的;然后调整 angular.json 文件中的设置。

请注意:构建时间取决于操作系统、硬件配置等。

【讨论】:

以上是关于应用程序正在生成我的延迟加载模块的一部分,前缀为 default ~ .. 甚至在它被调用之前的主要内容,如果未能解决你的问题,请参考以下文章

JHipster:延迟加载的模块 i18n 国际化

Angular 2 延迟加载技术

为延迟加载或子模块使用命名路由器出口

Symfony2,Doctrine,延迟加载和代理类问题

Angular Universal 12(服务器端)在延迟加载时不加载模块

为函数而不是组件反应延迟加载