Angular延迟加载会减小捆绑包大小吗?

时间:2018-11-29 09:46:25

标签: angular lazy-loading

我是新手。我想了解更多有关延迟加载的信息。根据定义,延迟加载模块可帮助我们减少启动时间。所以我的问题是,假设我的应用程序包含50个组件。在将其用于生产后,将生成900 KB的vendor.js。如果我懒加载其中的10个组件,它们会生成100 kb的块文件“ 1.chunk.js”。

那么在这种情况下,我的vendor.js捆绑包大小是否从900 KB减少到800 KB?如果不是,延迟加载模块如何帮助我们减少启动时间?

4 个答案:

答案 0 :(得分:4)

否,Angular的延迟加载功能不会减小包的大小,它仅按需加载包的一小部分-AKA O(n^2)-,而不是完全加载。因此,对于您的情况,捆绑包的大小不会从chunk 减小(如果您对大块的大小进行累加,由于实现了延迟加载之后,将要加载多个大块)< / strong>,但也不会立即加载900 KB

答案 1 :(得分:0)

顾名思义,延迟加载仅在请求时才加载(即懒惰)

也就是说,如果您在应用程序中实现了延迟加载,则应用程序将仅加载加载应用程序所需的相关模块。

因此,从本质上讲,它不是在加载应用程序最初不需要的模块。

这就是它如何帮助加快应用程序的加载时间的原因。

答案 2 :(得分:0)

延迟加载基本上是将组件分解为模块。因此,在路由中,您只需要配置主路由并将加载模块配置为子路由。

这会将您的100个组件分为10个模块,每个模块有10个组件 因此,对于每个人,您将有一个单独的

module-ngfactory.js

个文件。因此,如果将这100个文件包含在一个模块中(而不是延迟加载),您将拥有一个更大的module-ngfactory.js文件。

,并且仅在需要时才需要此加载。这样就可以快速加载。

加快Angular加载的最佳方法是引入AOT构建。使用时

ng-s 

这将转译代码,并让您知道转译的状态。但是包括ts文件在内的所有数据都将发送到浏览器以进行调试。因此ts到js的转换发生在浏览器中。这很慢。

使用

ng-s --aot 

AOT-提前进行代码转换会破坏js文件并发送到浏览器。因此没有浏览器端的翻译。这比使用JIT非常快

答案 3 :(得分:0)

由于加载的初始块大小非常小,因此与较大的捆绑包大小(所有模块都急于加载)相比,它将快速加载。