我是新手。我想了解更多有关延迟加载的信息。根据定义,延迟加载模块可帮助我们减少启动时间。所以我的问题是,假设我的应用程序包含50个组件。在将其用于生产后,将生成900 KB的vendor.js。如果我懒加载其中的10个组件,它们会生成100 kb的块文件“ 1.chunk.js”。
那么在这种情况下,我的vendor.js捆绑包大小是否从900 KB减少到800 KB?如果不是,延迟加载模块如何帮助我们减少启动时间?
答案 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)
由于加载的初始块大小非常小,因此与较大的捆绑包大小(所有模块都急于加载)相比,它将快速加载。