谷歌工程師概述了 Angular 的下一步計劃
在近期舉行的 Progress 360 會議上,谷歌的開發(fā)者關系工程師 Emma Twersky 發(fā)表了一個主題為"What’s New with Angular"的講話。演講的很大一部分內容集中在 Angular 的過去迭代以及這些變化如何為谷歌下一步的工作奠基。
Twersky透露,Angular 第 15 版計劃在 11 月發(fā)布。屆時谷歌將引入友好的堆棧跟蹤以幫助精確識別代碼錯誤的位置,以及 一種 優(yōu)化圖像組件的方法,此舉將使得網站的 First Contentful Paint 得到顯著改善。
谷歌正在快速迭代 Angular,其 12 和 13 版于去年發(fā)布,14 版則于今年 6 月發(fā)布。Twersky 稱,所有這些工作(包括 Ivy)實際上都是在“幕后”為未來的框架改進奠定基礎。Ivy 是 Angular 的下一代編譯和渲染管道,在 Angular 第 9 版中取代了 View Engine 成為了默認設置。“這是一次全面的重寫,我可以給出的最好的比喻是,這就像在汽車還在行駛時更換了汽車的引擎?!?
她指出,這個新引擎為 Angular 提供了更好的類型檢查、錯誤報告、調試和更小的 bundle sizes;但它真正做的是實現(xiàn)谷歌計劃的未來改進。隨著 Ivy 的完成,谷歌的計算資源減少了 90%,這反過來又導致谷歌最大的 Angular 應用程序的構建時間減少了大約 50 分鐘。
同時,Angular 團隊還推出了征求意見稿 (RFC),一個獲得反饋的機會,也是一個引入實驗性變化的機會。在版本 13 和 14 中,谷歌還開始發(fā)布開發(fā)者預覽版,旨在幫助更快地發(fā)展框架。
“如果我們有一份設計文檔,為什么不分享它,為什么不與數百萬使用 Angular 的開發(fā)人員進行 battle test 呢?為什么不提前考慮一些有趣的案例呢?我們真的在召集 Angular 大軍,一起解決問題。”
目前,谷歌已經發(fā)布了超過 15 個 RFC。其中兩個最大的 RFC 提到了獨立組件,NgModules 的刪除;這是配置 injector 和 compiler 的 Angular 特定模塊,以幫助將相關事物組織在一起。還進行了一些修復工作:更好地支持調試和診斷、錯誤消息的具體細節(jié)和指導,以及通過與 Chrome 團隊和第三方資源合作支持的 Angular 開發(fā)工具。
Twersky 指出,NG Modules 是新開發(fā)人員必須了解的 Angular 相關的另一個重點。根據社區(qū)的反饋,經常被人詬病的 NgModule 即將被淘汰(部分);Angular 14 引入了另一種編寫應用程序的方式 —— Standalone 組件、指令和管道。術語"standalone"指的是可以獨立于 NgModule 使用的組件、指令或管道。“盡管你仍然需要使用核心和外部 NgModule,但你可能不需要創(chuàng)建新的 NgModule”。
“Standalone 旨在簡化所有這些并簡化入門步驟。通過引入 standalone true flag,你可以直接 bootstrap 你的組件,并且不需要 module。”
她解釋道,這個想法是,整個應用程序現(xiàn)在可以是 standalone。這是一個重大變化,由谷歌創(chuàng)建的新 API 提供支持;它還承諾對 API 的任何更改都將向后兼容。 Angular 15 也將提供完整的 standalones 和支持。
“我們有一些東西可以使每個人受益,即默認情況下 zone JS-enabled 的異步堆棧獲取,但我們只是將其稱為更好的堆棧跟蹤。這是通過與 Chrome 的另一次合作,即使使用不是開發(fā)人員編寫的開源代碼以及發(fā)生錯誤的地方,也可以更輕松地減少相關內容?!?
此外,v15 還承諾從代碼庫中刪除一些未使用的代碼。“我們想要做的和 Northstar 提供的只是你需要的......所以如果你不使用它,我們會不再需要為你提供它。在 Angular 中,我們有很多代碼,但你的應用程序不會使用所有這些代碼。所以在編譯的某個時刻,我們可以去掉很多你不使用的代碼?!?
谷歌正在考慮的一些其他變化包括:
默認隱藏 CLI 配置。
數據中心。MDC Web 是由 Google Material Design 團隊創(chuàng)建的一個庫,它為構建 Material Design 組件提供可重用的 primitives。根據 Angular 團隊的路線圖,他們正在將這些 primitives 整合到 Angular Material 中。
就hydration和其他發(fā)展趨勢征求意見。