Angular 8正式发布!
Angular 團隊今天宣布推出 Angular 8 正式版。
作為一個期待已久的重大版本更新,Angular 8 為框架、Angular Material 和命令行界面工具?Angular CLI 帶來了大量的改進和新功能。
團隊表示 Angular 8 顯著減少了在現代瀏覽器中應用程序的啟動時間、提供了用于定制?CLI 的新 API,并讓 Angular 與生態系統以及更多的 Web 標準保持一致。
下面繼續看看?Angular 8 中值得關注的新特性。
新特性
默認啟用差異化加載(Differential loading)
所謂差異化加載就是瀏覽器會根據自己的狀態在現代和舊版本的 JavaScript 之間進行選擇的過程。在 Angular 8 中,我們可以通過為應用程序執行現代構建(es2015+)和舊版構建(es5)來默認使用此功能。
具體來說就是,作為構建過程的一部分,Angular CLI 將會分別生成現代(ES2015+)和舊版(ES5)構建的 JavaScript 捆綁包,當用戶加載應用程序時,客戶端會進行差異化加載,他們將自動獲得所需的捆綁包。
差異化加載可顯著提升現代瀏覽器的加載速度和傳輸間隔時間(TTI),亦即意味著支持 ES2015 的瀏覽器將能夠下載更小、更高效的捆綁包,當然這些包的加載速度和渲染速度都比以往更快。
這項工作主要基于 Manfred Steyer 的?ngx-build-modern?項目,與 Manfred 共同合作開發。
上圖是 Angular 團隊提供的數據,angular.io?網站為現代瀏覽器節省了超過 40kB 的捆綁包大小。每個網站的數據當然會有差異,主要取決于采用了多少現代的 JavaScript 特性。
新的渲染引擎 Ivy
作為新的渲染引擎,Ivy 旨在徹底縮減代碼尺寸并增強系統靈活性。
與目前的 Angular View Engine 相比,Ivy 具有以下優勢:
通過 Angular 編譯器生成的代碼更具可讀性,更易調試
更快的重建速度
有效減少負載大小,瀏覽器用于下載和解析應用程序的時間將更短
更好的模板類型檢查,以便在項目構建初期就可捕獲更多 Bug
優秀的向后兼容性
使用動態導入進行路由配置
在 Angular 8 中,我們可以使用路由以延遲加載部分應用程序,這是通過在路由配置中使用 loadChildren 鍵來實現的。
在之前的版本中會編寫如下的代碼:
{path: '/admin', loadChildren: './admin/admin.module#AdminModule'}這種語法是專門為 Angular 定制的,并內置到其工具鏈中。但 Angular 8 將逐漸往行業標準靠攏 —— 使用了動態導入的方式(dynamic imports)。
所以代碼會像下面這樣:
{path: `/admin`, loadChildren: () =>import(`./admin/admin.module`).then(m => m.AdminModule)}
這將改進對 VSCode 和 WebStorm 等開發工具的支持,可以更好理解和驗證這些導入。
對?Web Worker 的支持
可能有不少開發者對于?Web Worker 不太熟悉,簡單來說就是,開發者可通過 Web Worker 編寫運行在主線程之外的代碼(例如對圖像和視頻的操作),以此提升應用程序的運行速度和并行性。
Web Worker 是前端開發中的一項重要創新。在此之前,所有 Web 應用程序只能使用單線程。而隨著 Web Worker 的出現,可以將 CPU 分配到單獨的硬件線程中,使瀏覽器環境擁有多線程,從而提升項目開發效率。
在 Angular 8 之前,使用 Web Worker 存在這樣的問題:在 worker 中運行的代碼不能與應用程序的其余部分位于同一 JavaScript 腳本文件中,它必須是分開的。因此,對于曾經希望借助 Angular CLI 等工具,自動將 JavaScript 文件拆分、綁定到更少文件夾下的效果往往不佳。
Angular 8 的新特性之一就是改進了使用 Angular CLI 捆綁 WebWorker?的支持,這項改進意味著我們將走向多并發、自動化的 Web Worker 之路。
示例代碼:
const worker = new Worker(`./my-worker.worker`, { type: `module` });改進從 AngularJS 遷移至新版本的過程
屬于 AngularJS(Angular 1.x 系列)的時代已經過去,雖然現在還能接收到團隊的 bug 修復補丁,但不會再有任何更新。官方也在積極支持從 Angular 1.x 升級到更新的版本。
Angular Router 添加了向后兼容模式,以降低大型項目的升級成本。Angular Router 可以使用 $route APIs 延遲加載部分 AngularJS 應用程序,從而更容易地升級到 Angular。
目前仍有大量的企業在使用?AngularJS,他們沒有升級的原因也很簡單,這些應用運行良好,并且在重構時無需太多投入。不過對于使用?AngularJS 進行大型開發的團隊,現在正是升級的最佳時間。
Angular 8 不止帶來了很多令人稱贊的新功能,性能方面的改進也是一大亮點。與 Angular 7 相比,應用程序的啟動時間變得更短,耗費的花銷也更低。
那么問題來了,各位準備什么時候升級到 Angular 8 呢?
總結
以上是生活随笔為你收集整理的Angular 8正式发布!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core微服务 权限系统+工作
- 下一篇: .NET Core 3.0 webapi