在近期举行的 Progress 360 会议上,谷歌的开发者关系工程师 Emma Twersky 发表了一个主题为"What’s New with Angular"的讲话。演讲的很大一部分内容集中在 Angular 的过去迭代以及这些变化如何为谷歌下一步的工作奠基。
Twersky 透露,Angular 第 15 版计划在 11 月发布。届时谷歌将引入友好的堆栈跟踪以帮助精确识别代码错误的位置,以及一种优化图像组件的方法,此举将使得网站的 First Contentful Paint 得到显著改善。
谷歌正在快速迭代 Angular,其 12 和 13 版于去年发布,14 版则于今年 6 月发布。Twersky 称,所有这些工作(包括 Ivy)实际上都是在“幕后”为未来的框架改进奠定基础。Ivy 是 Angular 的下一代编译和渲染管道,在 Angular 第 9 版中取代了 View Engine 成为了默认设置。“这是一次全面的重写,我可以给出的最好的比喻是,这就像在汽车还在行驶时更换了汽车的引擎。”
她指出,这个新引擎为 Angular 提供了更好的类型检查、错误报告、调试和更小的 bundle sizes;但它真正做的是实现谷歌计划的未来改进。随着 Ivy 的完成,谷歌的计算资源减少了 90%,这反过来又导致谷歌最大的 Angular 应用程序的构建时间减少了大约 50 分钟。
同时,Angular 团队还推出了征求意见稿 (RFC),一个获得反馈的机会,也是一个引入实验性变化的机会。在版本 13 和 14 中,谷歌还开始发布开发者预览版,旨在帮助更快地发展框架。
“如果我们有一份设计文档,为什么不分享它,为什么不与数百万使用 Angular 的开发人员进行 battle test 呢?为什么不提前考虑一些有趣的案例呢?我们真的在召集 Angular 大军,一起解决问题。”
目前,谷歌已经发布了超过 15 个 RFC。其中两个最大的 RFC 提到了独立组件,NgModules 的删除;这是配置 injector 和 compiler 的 Angular 特定模块,以帮助将相关事物组织在一起。还进行了一些修复工作:更好地支持调试和诊断、错误消息的具体细节和指导,以及通过与 Chrome 团队和第三方资源合作支持的 Angular 开发工具。
Twersky 指出,NG Modules 是新开发人员必须了解的 Angular 相关的另一个重点。根据社区的反馈,经常被人诟病的 NgModule 即将被淘汰(部分);Angular 14 引入了另一种编写应用程序的方式 —— Standalone 组件、指令和管道。术语"standalone"指的是可以独立于 NgModule 使用的组件、指令或管道。“尽管你仍然需要使用核心和外部 NgModule,但你可能不需要创建新的 NgModule”。
“Standalone 旨在简化所有这些并简化入门步骤。通过引入 standalone true flag,你可以直接 bootstrap 你的组件,并且不需要 module。”
她解释道,这个想法是,整个应用程序现在可以是 standalone。这是一个重大变化,由谷歌创建的新 API 提供支持;它还承诺对 API 的任何更改都将向后兼容。Angular 15 也将提供完整的 standalones 和支持。
“我们有一些东西可以使每个人受益,即默认情况下 zone JS-enabled 的异步堆栈获取,但我们只是将其称为更好的堆栈跟踪。这是通过与 Chrome 的另一次合作,即使使用不是开发人员编写的开源代码以及发生错误的地方,也可以更轻松地减少相关内容。”
此外,v15 还承诺从代码库中删除一些未使用的代码。“我们想要做的和 Northstar 提供的只是你需要的......所以如果你不使用它,我们会不再需要为你提供它。在 Angular 中,我们有很多代码,但你的应用程序不会使用所有这些代码。所以在编译的某个时刻,我们可以去掉很多你不使用的代码。”
谷歌正在考虑的一些其他变化包括:
- 默认隐藏 CLI 配置。
- 数据中心。MDC Web 是由 Google Material Design 团队创建的一个库,它为构建 Material Design 组件提供可重用的 primitives。根据 Angular 团队的路线图,他们正在将这些 primitives 整合到 Angular Material 中。
- 就 hydration 和其他发展趋势征求意见。