按照官方的版本计划,Angular 6.0应该在2018年4月4日发布,目前已经延期了。
目前最新的版本是4月7日发布的6.0.0-rc.3,github.com/angular/ang…
主要的新特性
按照官方的说法,Angular 6体积将会更小、更加易于使用,同时运行速度也更快。当然,最重要的是,官方承诺平滑升级,没有破坏性变更。
主要新特性包括:
- Angular elements
- CDK
- Ivy renderer
- Bazel & Closure compiler
- ng update & ng add
- RXJS 6, Webpack 4, TypeScript 2.7 support
Angular elements
Angular Elements可以用来把组件打包成Web Component,甚至可以用在非Angular项目里面。
CDK
利用@angular/cdk,你可以基于@angular/material来构建自己的UI组件库。同时删除了对@angular/flex-layout的依赖,因为CDK将会支持响应式设计。
Ivy renderer
默认不会启用Ivy渲染引擎,如果你想用,需要手动修改编译参数。启用Ivy渲染引擎会带来很多好处:渲染速度更快、打包的体积更小,同时更加灵活。
(注:实际上这已经是第二次换渲染引擎了,第一次换到Render2,这次换成了Ivy,希望Ivy能带来让人眼前一亮的效果。)
Bazel and Closure compiler
“作为一款高质量的工具, ABC (Angular + Bazel + Closure) 工程里面倾注了我们大量的努力,你可以利用它来构建高质量的Angular应用。 ”
Bazel是Google内部一直使用的强大构建工具,根据Brad Green在上次演讲(www.ngfans.net/topic/105/p… )中提到的内容,Angular项目组采用Bazel的原因是,为了让构建工具保持统一,同时也让外部公司能享受到Google内部构建工具带来的好处。
对于Angular来说,最看中的是Bazel的增量编译特性和编译速度,按照官方的说法,Bazel的目标是:重新编译项目到浏览器能运行,只要2秒的时间。
Closure也是Google内部一直使用的一款工具,它可以对JS代码进行压缩和优化,生成的包体积更小(比如典型的死码消除特性)、对JS引擎更加友好。
- 更详尽的演进路线点这里(英文,墙?):g.co/ng/abc
- Bazel的官方网站点这里(英文,墙?):bazel.build/
- Closure的详细介绍点这里(英文,墙?):developers.google.com/closure/com…
ng update & ng add
从Angular CLI 1.7 开始你可以运行:
ng update
这样就可以自动更新package.json里面定义的依赖包,RxJS和TypeScript版本也会自动更新。
另一个命令是:
ng add
这个命令用来帮助开发者给自己的应用增加新特性。例如,你可以把一款普通应用变成Progressive Web Apps (PWA) ,你还可以一开始就指定应用的类型,而不是创建空白的项目。
RXJS 6, Webpack 4 & TypeScript 2.7 support
升级到RXJS 6可以缩小打包的体积。
Angular目前使用的webpack版本是3.x,很快webpack 4.x就要来了,Angular CLI已经做好了升级的准备。同样,升级到webpack新版本之后,可以利用scope hosting特性让编译之后的体积变得更小。
最后一点就是,Angular 6将会升级TypeScript到2.7 。
由 @业余小编 意译重写,英文版原文 medium.com/@jeroenouw/…