Angular 8.0 和 Ivy 演进计划

0_1550229506612_angular-ivy.png

“Ivy 到底什么时候能好?”

几乎每个星期都有人来问我们这个问题。

所以,我专门解释一下,以下是关于 Angular 8.0 和 Ivy 的演进计划。

根据版本计划,我们将会在2019年Q2发布Angular 8.0版本,届时将会包含 Ivy 预览版,在这个版本里面可以选择打开Ivy。

8.0 版本将会包含哪些特性?

目前团队中的大部分人都在为Ivy的发布而紧张工作,尽管如此,我们还是会在8.0版本里面引入很多更新。请特别注意:在最终发布之前,本文所描述的内容随时会发生改变。

针对现代JavaScript的差异化加载模式

新版本的CLI将会在打包的过程中同时生成两种JavaScript包:遗留版本(ES5)和(ES2015+),然后根据客户端的浏览器版本选择加载哪一种包。对于现代浏览器,将会极大地提升加载速度和TTI(time to interactive)。这块工作是基于Manfred Steyer和他的开源项目ngx-build-modern 开发的。

  • 可选的Ivy预览版本
    预览版将会评估你的项目是如何使用Ivy引擎的,同时用来给我们提供一些反馈,帮助我们做一些必要的改进。

  • Angular 路由模块向下兼容
    我们将会给 Angular 路由模块增加一个向下兼容模式,从而简化一些大型项目的升级过程。对于那些还在使用 AngularJS 的 $route API 的团队,这个特性将会让升级到新版本的过程更加平滑。
    (小编:完全没有必要,用 AngularJS 的团队基本上都伤透了心,都迁移到Vue去了,官方还是省点人力出来把新版本打磨得更好些为上。)

  • 改进Web Worker打包方式
    Web Worker 是一个非常流弊的特性,可以在主线程之外运行一些代码,从而提升应用的运行速度和并行性。根据开发者的强烈要求,我们将会在CLI里面内置针对 Web Worker 的打包支持。

  • 分享使用数据,可选
    为了让我们的工作更好地匹配社区的需求,我们将会在CLI里面增加监控模块。获得您的许可之后,我们将会收集一些匿名数据,比如:指令的使用情况、打包速度。收集到的数据越多,就可以帮助我们把Angular打造得越好。

  • 依赖升级
    按照惯例,为了和周边生态保持同步,我们会升级一大堆依赖包,例如:TypeScript、RxJS,以及Node版本。

使用Ivy之后的输出将会是什么样子?

在8.0中,我们计划发布一个Ivy渲染引擎的预览版本。如果你还不知道Ivy是什么,请参考这份视频(墙):


youtu.be

在预览版中,你可以切换渲染引擎,在构建的时候可以选择Ivy或者View Engine。详细做法会在后续的beta版本中放出。如果选择使用Ivy引擎,输出的运行时指令将会变成Ivy指令,而不是ViewEngine指令。届时将会使用Ivy编译器来构建你的应用,你所依赖的Angular模块,以及其它第三方模块都不会受到影响,因为我们将会使用compatibility compiler(兼容编译器)来进行检查。预览版会帮助你定位各种依赖问题,同时也会帮助我们改进兼容性问题。

在可选的预览版里面,你可以期待以下特性:

  • 生成更加便于阅读和调试的y运行时代码。
  • 重新编译的时间更短。
  • 优化打包体积(实际的业务应用将会看到大幅度的体积优化,我们同时还规划了更多改进)。
  • 优化组件模板中的类型检查。
  • 更好的向下兼容性。

Ivy 目前还不能全场景支持。在预览版里面,某些特性还无法完全兼容,比如i18n和Angular Universal。另外,在预览版里面,语言服务还无法工作。

预览版的主要目标是:让开发者把应用迁移到Ivy编译器和运行时指令上来,而不需要重写应用。在未来的稳定版中,很多Ivy引擎特有的API将会加入到公开API列表中,它们将会作为Angular Labs的一部分发布。

什么时候一切就绪?

我们无法保证精确的发布日期,并且本计划所描述的内容可能随时会发生修改。目前的计划是:2019年4月进入RC,然后大概过一个月发布8.0.0版本,届时这些特性将会达到基本可用的状态。我们将会利用Ivy的预览版来验证向下兼容性,同时验证那些可能会用到的自动迁移工具。

我们计划在今年秋天发布的下一个主版本里面打开Ivy完整版,到时候每个人都能使用它。在9.0版本里面,我们将会默认启用Ivy,并且不再提供自定义选项,因为我们将会把关注点放在向下兼容性和支持现有项目上面。

对于9.0版本即将发布的完整Ivy特性我们感到非常兴奋,它将会为很多开发者打开新世界的大门,也包括我们团队自身。 一旦获取到Ivy的最新进展,我们将会把最新的开发计划、用户体验、新特性,以及API分享给开发者。

如果想获取更多资讯,请随时关注本博客、twitter,或者来 ng-conf 面谈。


本文由“业余小编”意译改写,转载请获取授权,原文链接:
https://blog.angular.io/a-plan-for-version-8-0-and-ivy-b3318dfc19f7?tdsourcetag=s_pcqq_aiomsg​blog.angular.io​
blog.angular.io

Ivy 是一个极其重量级的更新,它可以极大地压缩打包体积、提升运行时速度,如果这个特性做得好,将会 Make Angular Great Again。否则,你懂的。

@业余小编 Angular反正在国内的占用率也不高了,再坏也坏不到哪去了😂 ,

期待中

Log in to reply

Looks like your connection to Angular开发者 was lost, please wait while we try to reconnect.