虽然团队的大部分人在忙于开发 Ivy,但也在努力为 Angular 8.0 版推出一些更新。需要注意的是,这些计划可能会在最终版本发布之前发生变化。
作为构建过程的一部分,CLI 将会生成遗留(ES5)和现代(ES2015+)JavaScript 捆绑包,并在客户端进行差异化加载,以提高现代浏览器的加载速度和 TTI。这项工作主要是基于 Manfred Steyer 的 ngx-build-modern 项目(https://www.npmjs.com/package/ngx-build-modern),并且与 Manfred 合作开发。
预览如何在应用程序中使用 Ivy,并向我们提供反馈,这样我们才能更好地将必要的变更和改进纳入到最终版中。
我们正在添加向后兼容模式,以简化大型项目的升级路径。用户可以使用 $route API 延迟加载 AngularJS 应用程序的部分内容,从而可以更容易地迁移到 Angular。
Web Worker 可用来编写运行在主线程之外的代码,以此来提高应用程序的运行速度和并行性。我们正在为 CLI 添加对 Web Worker 的捆绑支持,解决开发人员在这方面的需求。
为了更好地满足社区的需求,我们在 CLI 中添加了可选的遥测功能。在获得用户同意的情况下,我们将收集有关命令和构建速度等方面的信息。这方面的信息知道得越多,我们就能做得越好。
与往常一样,我们也在更新对 TypeScript、RxJS 和 Node 等工具的依赖,以便与生态系统的其他部分保持同步。
我们的目标是在 Angular 8.0 中包含可选的预览版 Ivy。如果你对 Ivy 还不熟悉,可以看一下 Kara 在谷歌 I/O 2018 大会上如何谈论 Ivy:
https://youtu.be/jnp_ny4SOQE?t=1320
可选的预览版 Ivy 可以让你在项目中切换 Ivy 和 View Engine,具体的操作细节将在即将推出的 beta 版本中提供。如果启用了这个选项,将会使用 Ivy 运行时指令而不是 ViewEngine 运行时来构建应用程序。应用程序将使用 Ivy 编译器构建,而且通过使用我们的兼容性编译器,来自 Angular 或其他第三方的依赖项仍然可以继续使用。预览版可以识别出与依赖项相关的问题,并帮助我们改进兼容性。
可选的预览版将带来如下内容:
生成更易于阅读和调试的代码;
更快的重建速度;
改进的有效载荷大小;
改进的模板类型检查;
非常棒的向后兼容性。
Ivy 并不一定可以用于所有的场景。某些功能(如国际化或 Angular Universal)在预览版中可能还不具备完全的兼容性。在预览版中,语言服务将无法正常运行。
这个预览版专注于在不重写应用程序的情况下让开发人员可以将应用程序切换到使用 Ivy 编译器和运行时指令。有很多特定于 Ivy 的 API 将被添加到我们的公共 API 中,作为 Angular Labs 和未来稳定版本的一部分。
我们现在无法承诺一个固定的时间表,这个计划还有可能会发生变化。现在的计划是在 2019 年 4 月进入 RC,并在一个月后发布 Angular 8.0。我们将在 Angular 8.0 中使用 Ivy 可选预览来验证我们对向后兼容性的承诺,可能还需要推出任何必要的自动迁移工具。
我们希望将 Ivy 作为今年秋季下一个主要版本的一部分。由于我们专注于向后兼容性和支持现有应用程序,因此还不打算在 Angular 9 中默认启用 Ivy。
我们真的很希望看到那个在 Angular 9 中推出完整版的 Ivy,为开发人员带来更多的可能性。如果有任何新的进展,我们会继续与大家分享我们的计划。
英文原文:
https://blog.angular.io/a-plan-for-version-8-0-and-ivy-b3318dfc19f7
GMTC 2019 全球大前端技术大会将于 6 月北京盛大开幕,来自 Google、BAT、美团、京东、滴滴等一线前端大牛将与你面对面共话前端那些事,聊聊大前端的最新技术趋势和最佳实践案例。目前大会最低价 7 折购票火热进行中,讲师和议题也持续招募中,点击“阅读原文”了解更多大会详情!