Angular 路線圖

2022-07-21 10:32 更新

Angular 路線圖

Angular 從 Google 內(nèi)部和更廣泛的開源社區(qū)都收到了大量的特性請求。與此同時,我們的項目列表包含大量維護任務、代碼重構、潛在的性能提升等等。我們匯集了來自來自開發(fā)者關系部門、產(chǎn)品管理部門和工程部門的代表,以確定此列表的優(yōu)先順序。當新項目進入隊列時,我們會根據(jù)其它項目的相對優(yōu)先級定期對它們進行排位。當工作完成后,項目就會在隊列中向上移動。

下面這些項目并沒有關聯(lián)到特定的 Angular 版本。我們會在完成時發(fā)布它們,它們會根據(jù)我們的發(fā)布計劃,并遵循語義化版本規(guī)范,變成特定版本的一部分。比如,當完成各種特性后會在下一個次要版本中發(fā)布,如果包含重大變更,則會到下一個主版本中發(fā)布。

進行中

為可選的 NgModules 實現(xiàn) API

在使 Angular 更簡單的過程中,我們正在努力引入 API,允許開發(fā)人員初始化應用程序、實例化組件,以及在不使用 NgModules 的情況下使用路由器。Angular v14 引入了獨立組件、指令和管道的 API 的開發(fā)人員預覽。在接下來的幾個季度,我們將收集開發(fā)人員的反饋,并完成使 API 穩(wěn)定的項目。作為下一步,我們將努力改進用例,例如 TestBed 、Angular 元素等。

提高鏡像性能

Aurora和 Angular 團隊正在努力實現(xiàn)旨在改進Core Web Vitals的鏡像指令。目前,該項目處于原型設計階段,團隊正在與合作伙伴驗證鏡像指令。

研究可擴展開發(fā)流程的微前端架構

我們進行了 40 次系列采訪,以了解社區(qū)對微前端架構的需求。我們隨后進行了更廣泛的社區(qū)調(diào)查。下一步,我們將公開分享對結果的分析。

調(diào)查現(xiàn)代包

通過加快構建時間研究現(xiàn)代包來改善開發(fā)體驗。作為使用esbuild和其他開源解決方案的項目試驗的一部分,將它們與 Angular CLI 中的最先進工具進行比較,并報告結果。在 Angular v14 中,我們發(fā)布了對 esbuild 的實驗性支持。接下來,團隊將專注于驗證新原型以及實現(xiàn) watch 和 Sass 支持。

現(xiàn)代 CSS

Web 生態(tài)系統(tǒng)在不斷發(fā)展,我們希望在 Angular 中反映最新的現(xiàn)代標準。在這個項目中,我們旨在提供有關在 Angular 中使用現(xiàn)代 CSS 特性的指南,以確保開發(fā)人員遵循布局、樣式等方面的最佳實踐。

支持向宿主元素添加指令

一個長期存在的特性請求是添加向宿主元素添加指令的能力。該特性允許開發(fā)人員在不使用繼承的情況下使用其他行為來增強自己的組件。該項目需要在 API 的定義、語義和實現(xiàn)方面付出巨大的努力。

更好的堆棧跟蹤

Angular 和 Chrome DevTools 正在共同努力,為錯誤消息啟用更具可讀性的堆棧跟蹤。

新的 CDK 原語

我們正在開發(fā)新的 CDK 原語,以促進根據(jù) WAI-ARIA 設計模式為ListboxCombobox創(chuàng)建自定義組件。作為該項目的一部分,Angular v14 引入了穩(wěn)定的菜單和對話框原語

通過集成 MDC Web 增強 Angular Material 組件

MDC Web是由 Google Material Design 團隊創(chuàng)建的一個庫,它為構建 Material Design 組件提供了可重用的原語。Angular 團隊正在將這些原語合并到 Angular Material 中。使用 MDC Web 可以使 Angular Material 與 Material Design 規(guī)范更緊密地保持一致,擴展無障礙性,提高組件質(zhì)量,并提高我們團隊的速度。

Angular 組件無障礙性

我們正在根據(jù) WCAG 等無障礙性標準評估 Angular Material 中的組件,并努力解決此過程中出現(xiàn)的任何問題。

文檔重構

確保所有現(xiàn)有的文檔都適合一組一致的內(nèi)容類型。將過度使用教程風格的文檔更新為獨立的主題。我們希望確保主教程之外的內(nèi)容是自給自足的,而不與一系列指南緊密耦合。在 2022 年第二季度,我們重構了模板內(nèi)容。下一步是為組件和依賴注入引入更好的結構。

未來

探索水化和服務器端渲染可用性的改進

作為這項工作的一部分,我們將使用服務器端渲染、不同的方法和 Angular 的機會來探索水化的問題空間。作為這個項目的結果,我們將驗證所做的工作以及行動計劃。

改進性能儀表板以支持回歸檢測

我們有一套針對每一次代碼更改都要運行的基準測試,以確保 Angular 符合我們的性能標準。為確??蚣艿倪\行時在代碼更改后不會退化,我們需要改進儀表板所使用的一些現(xiàn)有基礎設施。

提升無 Zone.js 方案的完整框架能力

我們將設計并實施一項計劃,使 Zone.js 在 Angular 應用程序中成為可選項。這樣,我們簡化了框架,改進了調(diào)試,并減少了應用程序包的大小。此外,這讓我們可以利用當前 Zone.js 不支持的內(nèi)置 async/await 語法。

將 ngc 作為 tsc 的插件,以提高構建性能

將 Angular 編譯器作為 TypeScript 編譯器的插件分發(fā)將大大提高開發(fā)人員的構建性能并降低維護成本。

更符合工效學的組件級代碼分割 API

Web 應用程序的一個常見問題是它們的初始加載時間很慢。改進它的一種方法是在組件級別應用更精細的代碼拆分。為了鼓勵這種實踐,我們將致力于開發(fā)更符合人體工程學的代碼拆分 API。

確保未來 RxJS 更改(版本 8 及更高版本)的順利采用

我們希望確保 Angular 開發(fā)人員正在利用 RxJS 的最新特性,并平滑過渡到框架的下一個主要版本。為此,我們將探索并記錄 v7 及更高版本的 RxJS 中更改的范圍,并計劃更新策略。

介紹依賴注入調(diào)試 API

為了改進 Angular 和 Angular DevTools 的調(diào)試工具,我們將使用提供依賴注入運行時訪問的 API。作為項目的一部分,我們將公開調(diào)試方法,這些方法允許我們探索注入器層次結構以及跨關聯(lián)提供程序的依賴項。

支持二維拖放

作為本項目的一部分,我們想實現(xiàn)對 Angular CDK 拖放的混合方向支持。這是存儲庫中要求最高的特性之一。

Completed

允許綁定到模板中的受保護字段

2022 年第二季度完成

為了改進 Angular 組件的封裝,我們啟用了綁定到組件實例的受保護成員的功能。這樣,你將不再需要將字段或方法公開為 public 來在模板中使用它。

發(fā)布有關高級概念的指南

2022 年第二季度完成

開發(fā)并發(fā)布有關變更檢測的深入指南。開發(fā)用于 Angular 應用程序性能分析的內(nèi)容。介紹變更檢測如何與 Zone.js 交互,并解釋它何時被觸發(fā)、如何分析其持續(xù)時間以及性能優(yōu)化的常見實踐。

為 @angular/forms 推出嚴格類型

2022 年第二季度完成

在 2021 年第四季度,我們設計了一個為表單引入嚴格類型的解決方案,并在 2022 年第一季度,我們完成了相應的評論請求。目前,我們正在實施具有自動遷移步驟的推出策略,這將支持對現(xiàn)有項目的改進。我們會首先在 Google 的 2500 多個項目中測試此解決方案,以確保為外部社區(qū)提供順暢的遷移路徑。

刪除舊版視圖引擎

2022 年第一季度完成

在我們所有內(nèi)部工具向 Ivy 的轉(zhuǎn)換完成后,我們將移除舊的 View Engine,以減少 Angular 的概念開銷、獲得更小的包大小、更低的維護成本和更低的代碼庫復雜度。

帶有可選 NgModules 的簡化 Angular 心智模型

2022 年第一季度完成

為了簡化 Angular 心智模型和學習旅程,我們將努力使 NgModules 成為可選。這項工作允許開發(fā)人員開發(fā)獨立組件并實現(xiàn)另一種 API 來聲明組件的編譯范圍。我們通過在RFC中捕獲的高級設計討論來啟動這個項目。

為 @angular/forms 設計嚴格類型

2022 年第一季度完成

我們將努力尋找一種方法,以具有最小向后不兼容影響的方式對響應式表單實施更嚴格的類型檢查。通過這種方式,我們可以讓開發(fā)人員在開發(fā)期間發(fā)現(xiàn)更多問題,啟用更好的文本編輯器和 IDE 支持,并改進響應式表單的類型檢查。

改進 Angular DevTools 與框架的集成

2022 年第一季度完成

為了改進 Angular DevTools 與框架的集成,我們正在努力將代碼庫移至angular/angular這個單一倉庫。這包括將 Angular DevTools 轉(zhuǎn)換為 Bazel,并將其集成到現(xiàn)有流程和 CI 管道中。

啟動高級編譯器診斷

2022 年第一季度完成

將 Angular 編譯器的診斷擴展到類型檢查之外。引入其他正確性和一致性檢查,以進一步保證正確性和最佳實踐。

更新我們的 e2e 測試策略

2021 年第三季度完成

為確保我們提供面向未來的 e2e 測試策略,我們希望評估 Protractor 的狀態(tài)、社區(qū)創(chuàng)新、e2e 最佳實踐,并探索新的機會。作為努力的第一步,我們共享了一個RFC,并與合作伙伴合作,以確保 Angular CLI 與用于 e2e 測試的最先進工具之間的順利集成。下一步,我們需要最終確定建議并為過渡編譯資源列表。

Angular 庫使用 Ivy

2021 年第三季度完成

在 2020 年初,我們共享了一個用于 Ivy 庫分發(fā)的RFC。在來自社區(qū)的寶貴反饋之后,我們開發(fā)了該項目的設計。我們現(xiàn)在正在投資開發(fā) Ivy 庫發(fā)行版,包括更新庫包格式以使用 Ivy 編譯、取消阻止 View Engine 庫格式的棄用以及?ngcc?。

通過自動測試環(huán)境拆除來改善測試時間和調(diào)試

2021 年第三季度完成

為了縮短測試時間并在測試之間創(chuàng)建更好的隔離,我們希望將?TestBed?更改為在每次測試運行后自動清理和拆除測試環(huán)境。

棄用并刪除 IE11 支持

2021 年第三季度完成

Internet Explorer 11 (IE11) 一直在阻止 Angular 利用 Web 平臺的一些現(xiàn)代特性。作為本項目的一部分,我們將棄用并刪除 IE11 支持,為常綠瀏覽器提供的現(xiàn)代特性打開道路。我們運行了一個RFC來收集社區(qū)的反饋,并決定接下來的步驟。

利用 ES2017+ 作為默認輸出語言

2021 年第三季度完成

支持現(xiàn)代瀏覽器讓我們可以利用 JavaScript 更緊湊、更具表現(xiàn)力和高性能的新語法。作為本項目的一部分,我們將調(diào)查哪些障礙是為了推進這項工作,并采取措施啟用它。

使用 Angular DevTools 加速調(diào)試和性能分析

2021 年第二季度已完成

我們正在開發(fā) Angular 的開發(fā)工具,它提供用于調(diào)試和性能分析的實用程序。該項目旨在幫助開發(fā)人員了解 Angular 應用程序中的組件結構和變更檢測。

通過整合的 Angular 版本控制和分支來簡化發(fā)布

2021 年第二季度已完成

我們希望在 Angular 的多個 GitHub 存儲庫(angular/angular 、 angular/angular-cliangular/components)之間整合發(fā)布管理工具。這項工作讓我們可以復用基礎設施,統(tǒng)一和簡化流程,并提高我們發(fā)布流程的可靠性。

通過提交消息標準化提高開發(fā)人員的一致性

2021 年第二季度已完成

我們希望統(tǒng)一跨 Angular 存儲庫(angular/angular 、 angular/components 、 angular/angular-cli)的提交消息要求和一致性,以便為我們的開發(fā)過程帶來一致性并復用基礎設施工具。

將 Angular 語言服務轉(zhuǎn)換為 Ivy

2021 年第二季度已完成

該項目的目標是通過將語言服務轉(zhuǎn)換為 Ivy 來改善體驗并消除遺留依賴。今天,語言服務仍然使用 View Engine 編譯器和類型檢查,即使對于 Ivy 應用程序也是如此。我們希望使用 Ivy 模板解析器和改進的 Angular 語言服務類型檢查來匹配應用程序行為。此次遷移也是朝著移除 View Engine 的方向邁出的一步,這將簡化 Angular,減少 npm 包大小,并提高框架的可維護性。

在 Angular 中使用本機受信任類型提高安全性

2021 年第二季度已完成

我們與 Google 的安全團隊合作,增加了對新 Trusted Types API 的支持。此 Web 平臺 API 可幫助開發(fā)人員構建更安全的 Web 應用程序。

使用 Angular CLI webpack 5 優(yōu)化構建速度和包大小

2021 年第二季度已完成

作為 v11 版本的一部分,我們在 Angular CLI 中引入了 webpack 5 的可選預覽。為確保穩(wěn)定性,我們將繼續(xù)迭代實現(xiàn)以實現(xiàn)構建速度和包大小改進。

通過在 Universal 應用中內(nèi)聯(lián)關鍵樣式來提速

2021 年第一季度已完成

加載外部樣式表是一個阻塞型操作,這意味著瀏覽器在加載所有引用的 CSS 之前無法開始渲染你的應用程序。在頁面的標題中擁有阻塞渲染的資源會顯著影響其加載性能,比如,它的首次內(nèi)容繪制。為了使應用程序更快,我們一直在與 Google Chrome 團隊合作內(nèi)聯(lián)關鍵 CSS 并異步加載其余樣式。

使用更好的 Angular 錯誤消息改進調(diào)試

2021 年第一季度已完成

錯誤消息通常會帶來有限的行動指南來幫助開發(fā)人員解決它們。我們一直致力于通過添加相關代碼、開發(fā)指南和其他資料來使錯誤消息更易于發(fā)現(xiàn),以確保更順暢的調(diào)試體驗。

通過更新的介紹性文檔改進了開發(fā)人員入門

2021 年第一季度已完成

我們將重新定義用戶學習旅程并刷新介紹性文檔。我們將清楚地說明 Angular 的好處,如何探索其功能并提供指導,以便開發(fā)人員可以在盡可能短的時間內(nèi)精通該框架。

擴展組件線束最佳實踐

2021 年第一季度已完成

Angular CDK 在 Angular 9 中引入了組件測試工具的概念。測試工具能讓組件作者創(chuàng)建支持的 API 來測試組件交互。我們將繼續(xù)改進此測試工具基礎架構,并闡明有關使用這些測試工具的最佳實踐。我們還在努力推動 Google 內(nèi)部更多地采用測試工具。

編寫內(nèi)容投影指南

2021 年第二季度已完成

內(nèi)容投影是一個核心的 Angular 概念,但在文檔中卻沒有足夠的篇幅來講它。作為該項目的一部分,我們希望確定內(nèi)容投影的核心用例和概念并記錄它們。

遷移到 ESLint

2020 年第四季度已完成

隨著 TSLint 的棄用,我們將轉(zhuǎn)向 ESLint。作為該過程的一部分,我們將努力確保與我們當前推薦的 TSLint 配置向后兼容,為現(xiàn)有 Angular 應用程序?qū)嵤┻w移策略,并將新工具引入 Angular CLI 工具鏈。

Operation Bye Bye Backlog(也稱為 Operation Byelog)

2020 年第四季度已完成

我們正努力將高達 50% 的工程能力投入到分類問題和 PR 上,直到我們清楚了解更廣泛的社區(qū)需求。之后,我們將投入多達 20% 的工程能力,以便及時跟進新提交的要求。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號