angular项目打包_Angular从7到8,是否如丝般顺滑

95b4272ad70c1740c0f0e48269caf003.png

每当框架或库的版本稍有大的改动,总会有人叫着学不动,其实升级无非就是加一些新的api,做一些优化,修复一些bug。

关于新特性这些就不废话了,版本刚发布的时候就有N多公众号、视频给你介绍这些,这里大家可以通过Angular完全开发手册的升级过程感受下。

升级环境

1. 首先把全局的angular-cli升到最新版本

npm install -g @angular/cli@latest

2. 更新项目中angular相关的包。

ng update --all
如果项目中依赖了其它包,可能导致上面的命令运行无法正常运行,

09beabb2cd85be3a51e2211bc24e03b0.png

你可以一个个把它们更新掉再运行上面的命令,当然我选择了更简单粗爆的

ng update --all --force

接下来就是等这些包都更新完,so easy。

代码修复

**整个修复过程采取’懒修复‘,这种移花接木的叫法您姑且将就着看,我会默认项目能跑起来,直到它报错,一句话:不报错不修复**

升级完成后,到项目里运行 ‘ng serve',不出意外肯定运行不起来,果真:

2ef470f51dec2d950ee3e5f7a31a9e76.png

这个简单,就是ts版本的问题,错误信息不要太清楚

npm install -D typescript@3.4.1

OK,再来 ng serve,又是意料之中:

1eff7ed3b398d89830e2659d4f6a5dba.png

是否很头疼?这么多错误,但仔细一看,其实就是一个错误,所有报错的文件都是因为使用了 @ViewChild或者@ContentChild获取HTML中的元素,关于这个错误官方的ChangeLog讲的很明白了,请仔细看一看。如果你怕看英文的,这里是我看的时候随手翻译过的。如果你压根不想看,好吧,我没有任何办法。

解决了这些问题以后,接着再来 ng serve,讲真,这个是意料之外的:

aede7727216a70d82df790fa95d6d8d9.png

好在报错信息很清楚,需要在tsconfig里加点东西

tsconfig.json
"files"

如果你的的项目做了服务端渲染,势必有另一个给服务端渲染打包用的tsconfig.json以及一个服务端的入口文件,比如我们这个项目里对应的是 tsconfig.server.json 和 main.server.ts,你需要像上面那样把入口文件加到对应的json文件中,注意路径写对。如果没有服务端渲染,请忽略。

ng serve 走起,意料之中的问题:

ea869ada1cbec704abbdb9963e53f852.png

官方的ChangeLog里也有,懒加载的语法变了

之前的写法:

...

现在的写法

...
{path: 'xxx', loadChildren: import('./xx/yy/zz.module').then(mod => mod.ZzModule)}
···

相信改起来也很容易,再来 ng serve,又是意料之外

46264e8999156eb1623d61230d27f2b2.png

有兴趣可以自己查一下,解决方法很简单,还是在tsconfig.json里,把complierOptions的module改成'exNext'或'commonjs'。像下面这样:

"compilerOptions"

再来 ng serve,编译确实successful了,但当我打开浏览器时却是一片空白,整个人一个就不好,好在控制台一看,出了这么个妖蛾子:

ffff4791490a0e0df2c8f716a6c92efb.png

好在之前就遇到过,是raw-loader版本的问题,因为刚开始粗爆的用了 --force,所以这个包被升级到2.0版本了,需要降回1.0

npm install -D raw-loader@1.0.0

继续 ng server, 完美!

到这里为止,可以说由7到8的升级过程就结束了。但是实际升级完成后还是遇到了一些小问题,就是上面说到@viewChild和@ContentChild,到底是使用 static: true 还是 false,这里就不废话了,changeLog里说的很清楚。如果你也有同样的问题,请仔细看一下。

真的要结束了,整个过程是否你如想像中的那般困难或简单?或者像标题里说的如丝般顺滑?不同的人有不同的答案,开心就好。

Angular完全开发手册​www.hijavascript.com
8229b947444031477a5a180972beae26.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值