【发布时间】:2018-12-04 14:26:10
【问题描述】:
自从将我的 Angular 应用程序升级到版本 5 和版本 6 后,它在浏览器中的下载速度一直非常缓慢,有时需要 30 或 40 秒以上。尽管我正在为生产优化构建 (ng build --prod --build-optimizer --aot),但核心文件加起来超过了 1 兆字节。
主要的罪犯是
-
main.1acde84f0c61a49d6387.js,也就是831kb, -
styles.99d75733e80daf42e5f9.css,即 269kb,以及 -
0.06cf948c35f50dabe8dc.js,即 243kb。
这些文件通常都这么大吗?知道如何减少它们并提高下载速度吗?
【问题讨论】:
-
很可能,这是由与您的应用捆绑的第三方库引起的。如果可以,请使用“ng 弹出”并获取 webpack 配置。添加 webpack-bundle-analyzer 插件 (npmjs.com/package/webpack-bundle-analyzer) 以找出导致大包大小的第 3 方。然后将其设置为外部脚本引用(最好是 CDN)而不是捆绑包的一部分。
-
我添加了 webpack-bundle-analyzer 插件。这是输出的屏幕截图:dropbox.com/s/bkdcbg30yct56b5/…。我无法识别任何不应该存在的东西......
-
我看到了一些您可以分离出来的第三方库(lodash.js、url.js)。你使用的是@angular/cli 还是 webpack?据我所知,如果您可以将供应商捆绑包与应用捆绑包分开,您应该能够将捆绑包大小降低到大约 100Kb (main.js)。
-
延迟加载模块也会有所帮助。
-
感谢您的提示。我在
package.json中列出了 angular-cli,并且我正在从命令行构建。这是否意味着我正在使用 angular-cli?我没有意识到这是非此即彼的。我很想将供应商捆绑包与应用捆绑包分开,但我不确定如何。这是ng eject的用途吗?
标签: angular performance build download production