一、序章
- 最近看了一下Angular稳定版本v8.1.0已发布更新,在入门探索之前先去了解一下版本更新的内容以及新发布的功能,可以让自己明确研究的方向和目标。
二、Angular 8 中有什么新功能
- Java中的差异化加载
作为构建过程的一部分,Angular CLI 生成的新应用程序现在将包含用于旧版Java(ES5)和现代 Java(ES2015 +)的单独软件包。该包在客户端中实现差异化加载,以提高浏览器的加载速度和传输间隔时间(TTI)。这是一个好消息,意味着支持ES2015 的浏览器将能够下载更小、更高效的应用程序包,而这些应用程序包的加载速度和渲染速度都比以往更快。 - Ivy (预览版)视图引擎抢先试用
您可在应用程序中开始使用 Ivy 渲染器,并向 Angular 团队提供使用反馈,以便其及时做出优化和修复。 - Angular Router的向后兼容模式
Angular 添加了向后兼容模式,以降低大型项目的升级成本。Angular Router 将可以使用 $ route APIs 在现有的 Angular 应用程序中,选择延迟加载部分 Angular 1.x应用程序。在理想的情况下,我们甚至可以立即将 Angular 1.x 应用程序升级到 Angular 2+。
然而,现实并非如此。直到今天,还有大量传统的Angular应用程序仍在为企业提供服务。而这些企业没有选择升级的原因很简单:它们运行良好,并且在完成重写时无需太多投入。
Angular 1.x的时代已经结束,之后不会有任何新的更新,直到2021年6月30日。因此,对于从事大型Angular 1.x应用程序开发的团队,现在正是选择升级的最佳时间。
- 改良的Web Worker绑定方式
Web Worker是编写主线程运行代码的好方法,可用于提高应用程序的速度和并发性。为了达到这一目标,Angular团队在 CLI 中添加了改良的 Web Worker绑定支持。 - 可选的信息共享机制
为了有效收集您的反馈,更好地建设 Angular社区,Angular团队在CLI中添加了可选的信息共享机制。在您同意的情况下,将开始收集您的命令行和构建速度等匿名信息。 - 依赖关系更新
与往常一样,Angular团队正在更新对Type、RxJS和Node等工具的依赖关系,以便与 Angular 生态系统的其余部分保持同步。
三、Angular Ivy 是什么
作为下一代 Angular 的视图引擎,Ivy 的出现旨在彻底缩减代码尺寸并增强系统灵活性。与目前的 Angular View Engine 相比,Ivy 具有以下优势:
- 通过 Angular 编译器生成的代码现在将更容易让开发者阅读和理解
- 项目重建时间将明显加快
- 有效减少了负载大小,浏览器用于下载和解析应用程序的时间将更短
- 更好的模板类型检查,以便您在项目构建初期,就可捕获更多BUG,以防止用户在运行时遇到它们
除此之外,Angular Ivy 与现有的 Angular 应用程序广泛兼容。因此,在理想的情况下,您将无需更改应用程序即可获得 Ivy 的全部支持。这也是为什么使用 Angular 8 和 Ivy 构建当前的Angular 应用程序会更加便利。
Ivy(预览版)可能存在的问题
目前已知的是,Ivy 的国际版和 Angular Universal 版尚未完全兼容。当然,如果您在开发过程中遇到任何使用 BUG,请立即向 Angular 技术团队反馈,以便他们能够及时解决问题并将您的建议作为 Ivy 正式版的一部分。
如果您的 Angular 应用程序支持多语言或使用服务器端呈现数据,请不要指望它能与 Ivy 完美结合。除此之外,用户可能遇到的另一个问题就是 Angular Material,目前来看,使用 Angular Material 的应用似乎与即将发布的 Angular 8 预览版 Ivy 不太匹配。
四、Angular 8 对 Web Worker 的支持
对于那些对 Web Worker 还不熟悉的开发者来说,Web Worker 标志着前端开发中的一项重要创新,在此之前,所有 Web 应用程序仅限于使用单线程。而随着 Web Worker 的出现,可以将CPU分配到单独的硬件线程中,使浏览器环境拥有多线程,从而提升项目开发效率。
在 Angular 8更新之前,使用 Web Worker 需要注意的问题是:在 worker 中运行的代码不能与应用程序的其余部分位于同一 Java 脚本文件中。它必须是分开的。因此,对于曾经希望借助 Angular CLI 等工具,自动将 Java 文件拆分、绑定到更少文件夹下的效果往往不佳。而 Angular 8 的新特性之一便是改进了使用 Angular CLI 捆绑 Web Worker 的支持,这项改进意味着您将走向多并发、自动化的 Web Worker之路。
五、Angular 8 对 Type 的支持
关于 Angular 8 中的依赖更新,包括了对 Angular 依赖项和最新版本的更新,如 RxJS 和TypeScript 。这看起来似乎是一个微小的改进,但却同样受欢迎,特别是 TypeScript部分。
六、是否应该升级Angular 8
正如我们所看到的,Angular 8 的新增特性除 Ivy 之外并不是很亮眼,尽管这些特性非常好用,但对于大多数应用程序来说并不重要。
基于这一点,您应该将应用程序升级到 Angular 8,还是坚持使用 Angular 7?毫无疑问,你应该升级它们。即便功能上没有任何大的重大更新,但通过 Angular 8 新增的差异化加载,您将获得显著的性能提升。
更重要的是,升级到 Angular 8将确保您的应用程序为Ivy做好准备,即便目前 Ivy只是Angular 8 提供的一个可选预览。如果您的应用程序需要兼容 Ivy,那么最好从现在开始尝试。
七、总结
从上面一些点可以看出,Angular 8版本对比最近的7来说功能上可能确实没有太大的变化,但是它同样提供了一些很好的优化和功能升级。比如大家期待的lvy以及对TypeScript的更好支持,前端的框架在不断演进,虽然大同小异但是可以看出来总体上都是朝着一个方向发展的,学习不同的框架也可以让我们彼此印证他们之间的差异,同时借鉴不同框架的思想。