Angel 8有arrived,同时还对工作流程和性能进行了一系列改进。就像我们对previousfewreleases,所做的那样,让我们来看看Angel 8有什么新功能,以及如何将您的Angel 7应用程序升级到Angel 8。
Angel 8版本亮点
我想说的是,8号角表面上的新功能数量有限,但仍然有一些好的东西:
差异加载
您的Angular 8应用程序现在将自动提高性能,这要归功于差分加载。
使用差异加载,在为生产构建时会创建两个捆绑包:一个是针对支持ES2015+的现代浏览器的捆绑包,另一个是针对仅支持ES5版本的JavaScript的旧浏览器的捆绑包。浏览器将自动加载正确的捆绑包,这要归功于较新的browsers](https://jakearchibald.com/2017/es-modules-in-browsers/).中的[ES6模块
这一新功能为ANGLE V8带来了最大的单一性能改进。较新的浏览器将能够加载更少的代码和加载更少数量的多边形填充。
您无需执行任何特殊操作即可从差异加载中获益,带有--prod
标志的ng Build
命令将负责捆绑所有内容,以便差异加载开箱即用:
1$ ng build --prod
惰性路由动态导入
延迟加载的routes现在使用标准的动态import语法,而不是自定义字符串。这意味着,当模块丢失或拼写错误时,打字脚本和缩略器将能够更好地进行投诉。
所以一个lazy-loaded import看起来像这样:
1{ path: '/cart', loadChildren: './cart/cart.module#CartModule' }
现在看起来如下所示:
1{ path: `/cart`, loadChildren: () => import(`./cart/cart.module`).then(m => m.CartModule) }
如果您正在使用ng upgrade
命令升级您的应用程序,语法上的更改将为您处理。
CLI工作流改进
命令行工具正在不断完善,目前ng构建
、ng测试
和ng运行
都准备好了,可以通过第三方的库和工具进行扩展。例如,AngularFire已经通过一个ploy
命令利用了这些新功能。
艾薇和巴泽尔呢?
我们将不得不等待更多一点的时间来等待新的渲染引擎Ivy,和Bazel,)新的构建系统,才能准备好与ANGLE一起正式使用。这两个版本的预览版应该很快就会推出。
7角升级为8角
与前几个版本一样,将应用程序从Angular 7升级到Angular 8是轻而易举的事。如果您已经迁移到使用新的HttpClient和[RxJS 6](/angular/angular-6/# upgrading),则尤其如此。
在最简单的情况下,您只需运行一个命令即可升级到Angular 8:
1$ ng update @angular/cli @angular/core
使用该命令,您的延迟加载的路由导入将自动迁移到新的导入语法。
关于升级过程,请记住以下几点:
- 可能会出现一些新的语法错误。这是因为ANGLE现在使用的是TypeScrip 3.4,这可能会暴露出一些以前没有突出显示的问题。
- 您需要确保使用的是Node.js版本12或更高版本。您可以通过运行
$node-v
来查看您使用的是哪个版本的Node。如果你需要获取最新版本,只需前往Node官方下载page]。
升级角度材质
如果您的应用程序使用角度材质,则需要执行以下命令:
1$ ng update @angular/material
此命令还将负责将角度材质组件导入更改为每个特定组件,而不是从全局@角度/材质
导入。
<$>[注意]如果您尝试从ANGLE 7以外的其他版本进行升级,您可以使用官方的ANGLE升级指南获取如何继续升级的说明。<$>
了解详情
- Angular 8现在依赖于TypeScript 3.4。查看release highlights,了解这个新版本的TypeScript有什么变化。
- 如果你的应用使用Angular Material,我建议你看一下v8的发行说明。
- 来自Angular团队的Stephen Fluin整理了一个[系列](https:www.youtube.com/watch? v=RBzogbjk3t4)[of](https:www.youtube.com/watch? v= jPXl 7sCPCOA)[视频](https:www.youtube.com/watch? v= lEmN 5 YpcFKQ),展示了Angular 8中的新特性。