详解为生产环境编译Angular2应用的方法
2024-06-24 11:14:55阅读量:32 字体:大 中 小
这篇文章主要介绍了详解为生产环境编译Angular2应用的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Angular 2 已经发布了 2.1.2 版本, 相信很多人已经在使用(试用)了, 相比 AngularJS 1.x , Angular 2 在性能上有了长足的进步, 同时 Angular 2 也变得非常的庞大, 动辄几兆的脚本, 如何部署到生产环境? 接下来就介绍如何为生产环境编译 Angular 2 应用, 在本文中, 我们将 Angular 2 官方文档中的Hello Angular 应用编译到 50K 以下, 以用于生产环境。
未经优化的应用
根据 Angular2 官方的 QuickStart 快速创建一个Hello Angular 应用, 在没有任何优化的情况下, 运行情况如下图所示:

从上图可以看出, 仅仅一个 Hello 应用, 就产生了 40 个请求, 加载了 1.8M 的脚本, 这个在生产环境下(特别是移动端)是无法接受的。
要看这一步的完整源代码, 请移步 GitHub 。
打包与压缩
传统的方式无非就是进行打包和压缩, 我使用 browserify 和 uglifyjs 来进行打包与压缩, 首先是安装这两个工具类库:
在 package.json 文件中添加这两个 npm 命令:
现在运行这两个命令, 看看会怎么样:
经过一大堆 WARN 之后, 没有出现 ERROR , 也没有出现 npm-debug.log 文件, 证明没有错误, 现在来分析一下大小:
bundle.js 有 1.4M , 不过 bundle.min.js 被压缩到了 528K , 看起来还不错, 还可以再优化一下, 那就是 gzip 压缩, 通常在服务器上都会启用:
经过 gzip 之后, bundle.min.js.gz 有 129K , 似乎应该可以了吧? 但是我觉得还有优化的空间。
要看这一步的完整源代码, 请移步 GitHub 。
AOT 以及 Tree Shaking
ES2016 (ES6) 有一个很重要的特性, 那就是 Tree Shaking , 可以移除项目中不需要的部分, 接下来我们使用 rollup 进行 Tree Shaking 。
为了能够使用 Tree Shaking , 我们需要将项目中的 TypeScript 编译成 ES2015 脚本, 需要修改 TypeScript 配置, 新建一个 tsconfig-es2015.json 的配置文件, 内容如下:
在 Angular2 应用中, 包含了一个即时编辑器 (JIT) , 在预编译好的应用中不是必需的, 使用 Angular2 的 AOT 编译可以移除即时编译器 (JIT) , 因此需要先安装 Angular 的编译器:
为了使用 aot 编译出来的文件, main.ts 文件也要做相应的修改, 将 main.ts 文件另存为 main-aot.ts , 修改内容如下:
不再使用platform-browser-dynamic , 改为使用platform-browser 。
同时 index.html 也另存为index-aot.html , 也做相应的修改, 不在加载 system.js , 改为直接使用最终的 aot 脚本:
接下来的整体的思路是:
1、使用 ngc 进行 aot 编译;
这一步将会生成一系列*.ngfactory.ts *.module.metadata.json 临时文件, 可以更新.gitignore 来忽略这些文件, 避免对代码库造成污染;
2、将 typescript 文件编译成 es2015 (es6) 脚本;
3、使用 rollup 进行 tree shaking , 移除项目不使用的功能;
4、再次使用 typescript 将 tree shaking 之后的脚本编译成 es5 脚本;
5、使用 uglifyjs 再次压缩上一部生成的 es5 脚本;
这几个命令对应的 npm 脚本如下:
最终只要运行一个命令即可:
最后来看一下最终的文件大小:
最终生成的 bundle-aot.min.js.gz 只有 46K , 比没有使用 aot 编译的最终文件 bundle.min.js.gz 少了将近 2/3 , 可以说 aot + tree shaking 效果非常的显著。
要看这一步的完整源代码, 请移步 GitHub 。
经过这样的终极编译优化编译之后, 应该可以放心的部署到生产环境了。
免责声明:
本文《详解为生产环境编译Angular2应用的方法》版权归原作者所有,内容不代表本站立场!
如本文内容影响到您的合法权益(含文章中内容、图片等),请及时联系本站,我们会及时删除处理。
推荐阅读

倒数日怎么删除不用的事件
倒数日是一款倒计时软件,添加的事件可以进行删除,进入事件编辑即可删除。具体操作方法如下: 倒数日怎么删除不用的事件 1、打开手机倒数日app,点击需要删除的事件,进入事件页面。 2、点击右上角笔的标...
阅读: 701

怎么关闭零钱通
零钱通是微信中的一个理财产品,如果需要关闭,在零钱通的设置中直接关闭即可。具体操作方法如下: 怎么关闭零钱通 1、打开手机微信app,点击我”。 2、点击服务”。 3、点击...
阅读: 718

qq听歌状态怎么显示听的歌
qq听歌状态可以显示正在QQ音乐听的歌,设置听歌状态后进入QQ音乐听歌即可。具体操作方法如下: qq听歌状态怎么显示听的歌 1、打开手机QQ软件,点击头像上的状态,进入状态设置。 2、找到并点击听歌...
阅读: 791

qq相册怎么转移到另一个qq
qq相册要转移到另一个qq,可以借助转载功能进行转移,使用QQ进入另一个QQ的相册即可进行转载。具体操作方法如下: qq相册怎么转移到另一个qq 1、打开手机QQ软件,点击联系人”,再点击...
阅读: 708

花呗账单日怎么修改
花呗的账单日可以通过修改还款时间来修改,修改花呗的还款时间后,出账单的日子也会改变,通过设置修改花呗的账单日的具体操作步骤如下: 花呗账单日怎么修改 1、打开支付宝app,先点击下方的我的&rdquo...
阅读: 773

抖音怎么0.5倍速播放
抖音视频播放有四种倍速选择,要设置0.5倍播放,在视频播放中即可直接设置。具体操作方法如下: 抖音怎么0.5倍速播放 1、打开手机抖音app,进入视频播放,长按视频,进入播放设置页面。 2、点击倍速...
阅读: 783
热门文章
1.英语趣配音怎么导出视频
- 1

- 英语趣配音怎么导出视频
- 2022-12-28
- 1
2.上传群相册怎么不在群里显示
- 2

- 上传群相册怎么不在群里显示
- 2022-12-28
- 2
3.电子稿怎么弄
- 3

- 电子稿怎么弄
- 2022-12-28
- 3
4.在喜马拉雅上怎么接配音任务
- 4

- 在喜马拉雅上怎么接配音任务
- 2022-12-28
- 4
5.微信删除好友频繁了怎么继续删除
- 5

- 微信删除好友频繁了怎么继续删除
- 2022-12-28
- 5
6.朋友圈动图怎么不动
- 6

- 朋友圈动图怎么不动
- 2022-12-28
- 6
7.拉黑了怎么加回来
- 7

- 拉黑了怎么加回来
- 2022-12-28
- 7
8.超话等级怎么快速升
- 8

- 超话等级怎么快速升
- 2022-12-28
- 8
9.支付宝买彩票在网上怎么买
- 9

- 支付宝买彩票在网上怎么买
- 2022-12-31
- 9
10.QQ等待验证是不是拉黑了
- 10

- QQ等待验证是不是拉黑了
- 2022-12-27
- 10
最近更新

酷狗音乐中使用蝰蛇音效制作工具的具体操作方法
2024-11-11

win7电脑中出现声音图标不见了的具体解决方法
2024-11-11

车到哪app的详细软件介绍
2024-11-11

小米9se中查看序列号的具体操作方法
2024-11-11

迅雷中使用FTP探测器的详细操作方法
2024-11-11

ppt制作出小荷才露尖尖角动画场景的具体操作步骤
2024-11-11
