開發工程師必看:谷歌前端框架Angular 10的新特性介紹

開發工程師必看:谷歌前端框架Angular 10的新特性介紹

Angular 10有什麼新東西?

作為目前最流行的web前端開發框架之一,Angular 10的升級計劃目前正在進行中,自4月8日以來已經發布了9個基於typescript平臺的測試版。預計這次升級將更關注生態系統,而不是功能。

Angular 10很可能比以前的版本要小。Angular 10產品發佈的目標日期還有待確定。Angular 9.0於2019年2月6日全面上線,隨後在2019年3月25日又發佈了Angular 9.1。Angular 8.0於2019年5月28日發佈。你可以在GitHub上找到Angular 10的初步版本。

Angular 10的新特性

1、添加了一個編譯器接口來封裝實際的ngtsc編譯器。特定於語言服務的編譯器使用項目接口管理多個typecheck文件,根據需要創建Scriptinfos。

2、對於編譯器,已經為屬性讀取和方法調用添加了名稱範圍。

3、在一個突破性的變化中,ModuleWithProviders強制使用了generic。ModuleWithProviders模式需要一個泛型類型參數來處理Ivy編譯和呈現管道,但是在提交之前,視圖引擎允許省略泛型類型。如果開發人員使用沒有泛型類型的ModuleWithProviders,版本10遷移將更新代碼。但是,如果開發人員使用視圖引擎,並且依賴於省略泛型類型的庫,則會發出構建錯誤。在這種情況下,ngcc不會有幫助,遷移只會覆蓋應用程序代碼。應該聯繫庫作者來修復他們的庫。作為一種變通方法,skiplibcheck可以在tsconfig中設置為false,或者更新應用程序以僅使用Ivy。

4、TypeScript 3.9現在有了,對TypeScript 3.8的支持已經被移除。這是一個突破性的變化。TypeScript 3.6和TypeScript 3.7也不再支持。

5、編譯器-cli的類型檢查性能得到了改進。

6、為了提高性能,基路徑的計算變得很懶,所以只有在TargetedEntryPointFinder中需要時才進行工作。以前,只要實例化finder,就會計算basePaths,這對於已經處理了目標入口點的情況來說是一種浪費。

7、支持合併多個翻譯文件。以前,每個地區只允許一個翻譯文件。現在,用戶可以為每個地區指定多個文件,每個文件的事務將通過消息ID進行合併。

8、可以配置異步鎖定超時。這增加了對ngcc.config.js文件的支持,用於設置AsyncLocker的重試嘗試和重試延遲選項。集成測試添加一個新的超時檢查,並使用ngcc.config.js減少超時時間,以防止測試花費太長時間。

9、在一箇中斷的更改中,關於未知元素的警告現在被記錄為錯誤。雖然這不會破壞應用程序,但它可能會使那些不希望通過console.error記錄任何內容的工具出錯。

10、在另一箇中斷更改中,任何返回空的解析器都將取消導航。要允許導航繼續,開發人員必須更新解析器以更新某些值,如default!Empty。

11、向元數據添加依賴項信息和ng-content選擇器。這個建議的編譯器特性將提供額外的元數據,這些元數據對於Angular語言服務等工具非常有用,能夠為庫中定義的指令/組件提供建議。

12、性能改進,通過減少入口點清單的大小和清單中的緩存技術實現。此外,依賴項的緩存是在entrypoint清單中完成的,並從那裡進行讀取,而不是每次都進行計算。以前,即使entrypoint不需要處理,ngcc (Angular Ivy兼容性編譯器)也會解析entrypoint的文件來計算依賴關係,這對於large_node模塊來說會花費很多時間。

13、在一箇中斷的更改中,邏輯被更新,以用於格式化跨越午夜的日週期。當使用b或b格式代碼格式化時間時,呈現的字符串不能正確處理跨越天數的天數。相反,邏輯回到了AM的默認情況。這個邏輯已經被更新,所以它匹配了一天中超過子夜的時間段的時間,所以它現在將呈現正確的輸出,例如在夜間的英語中。使用formatDate()或DatePipe或b和b格式代碼的應用程序將受到此更改的影響。

14、對於路由器,CanLoad守衛現在可以返回Urltree。一個返回Urltree的CanLoad守衛取消當前的導航並重定向。這與當前可用於激活也已添加的守衛的行為相匹配。這並不影響預加載。一個可以加載的保護塊阻止任何預加載;任何帶有CanLoad保護的路由都不會被預加載,這些保護也不會作為預加載的一部分執行。

15、在微語法表達式的表達式綁定到ParsedProperty的表達式中傳播正確的值span,這又會將span傳播到模板ast(包括VE和Ivy)。這個建議也適用於編譯器。

16、在核心的修復中,邏輯將被添加到未修飾類遷移中,以修飾使用Angular特性的未修飾類的派生類。

17、在一箇中斷的更改中,Urlmatcher的類型將反映它總是可以返回null。

18、對於服務工作者,已經為這樣一種情況進行了修復:當存在長時間運行的任務或重複超時時,服務工作者有可能永遠不會註冊。

19、已經修復了許多錯誤,包括編譯器避免在holey數組中使用未定義的表達式,以及內核避免在導入不存在的符號時出現遷移錯誤。在內核中還有一個針對Terser內聯錯誤的解決方案。另一個bug修復正確地識別了受TestBed中覆蓋影響的模塊。


分享到:


相關文章: