Angular 8.0 和 Ivy 演進計劃
“Ivy 到底什麼時候能好?”
幾乎每個星期都有人來問我們這個問題。
所以,我專門解釋一下,以下是關於 Angular 8.0 和 Ivy 的演進計劃。
根據版本計劃,我們將會在2019年Q2釋出Angular 8.0版本,屆時將會包含 Ivy 預覽版,在這個版本里面可以選擇開啟Ivy。
8.0 版本將會包含哪些特性?
目前團隊中的大部分人都在為Ivy的釋出而緊張工作,儘管如此,我們還是會在8.0版本里面引入很多更新。請特別注意:在最終釋出之前,本文所描述的內容隨時會發生改變。
- 針對現代JavaScript的差異化載入模式
新版本的CLI將會在打包的過程中同時生成兩種JavaScript包:遺留版本(ES5)和(ES2015+),然後根據客戶端的瀏覽器版本選擇載入哪一種包。對於現代瀏覽器,將會極大地提升載入速度和TTI(time to interactive)。這塊工作是基於Manfred Steyer和他的開源專案ngx-build-modern 開發的。
- 可選的Ivy預覽版本
預覽版將會評估你的專案是如何使用Ivy引擎的,同時用來給我們提供一些反饋,幫助我們做一些必要的改進。
- Angular 路由模組向下相容
我們將會給 Angular 路由模組增加一個向下相容模式,從而簡化一些大型專案的升級過程。對於那些還在使用 AngularJS 的 $route API 的團隊,這個特性將會讓升級到新版本的過程更加平滑。
(小編:完全沒有必要,用 AngularJS 的團隊基本上都傷透了心,都遷移到Vue去了,官方還是省點人力出來把新版本打磨得更好些為上。)
- 改進Web Worker打包方式
Web Worker 是一個非常流弊的特性,可以在主執行緒之外執行一些程式碼,從而提升應用的執行速度和並行性。根據開發者的強烈要求,我們將會在CLI裡面內建針對 Web Worker 的打包支援。
- 分享使用資料,可選
為了讓我們的工作更好地匹配社群的需求,我們將會在CLI裡面增加監控模組。獲得您的許可之後,我們將會收集一些匿名資料,比如:指令的使用情況、打包速度。收集到的資料越多,就可以幫助我們把Angular打造得越好。
- 依賴升級
按照慣例,為了和周邊生態保持同步,我們會升級一大堆依賴包,例如:TypeScript、RxJS,以及Node版本。
使用Ivy之後的輸出將會是什麼樣子?
在8.0中,我們計劃釋出一個Ivy渲染引擎的預覽版本。如果你還不知道Ivy是什麼,請參考這份視訊(牆):
https://youtu.be/jnp_ny4SOQE?t=1320youtu.be youtu.be在預覽版中,你可以切換渲染引擎,在構建的時候可以選擇Ivy 或者View Engine 。詳細做法會在後續的beta版本中放出。如果選擇使用Ivy引擎,輸出的執行時指令將會變成Ivy指令,而不是ViewEngine指令。屆時將會使用Ivy編譯器來構建你的應用,你所依賴的Angular模組,以及其它第三方模組都不會受到影響,因為我們將會使用compatibility compiler (相容編譯器)來進行檢查。預覽版會幫助你定位各種依賴問題,同時也會幫助我們改進相容性問題。
在可選的預覽版裡面,你可以期待以下特性:
- 生成更加便於閱讀和除錯的y執行時程式碼。
- 重新編譯的時間更短。
- 優化打包體積(實際的業務應用將會看到大幅度的體積優化,我們同時還規劃了更多改進)。
- 優化元件模板中的型別檢查。
- 更好的向下相容性。
Ivy 目前還不能全場景支援。在預覽版裡面,某些特性還無法完全相容,比如i18n和Angular Universal。另外,在預覽版裡面,語言服務還無法工作。
預覽版的主要目標是:讓開發者把應用遷移到Ivy編譯器和執行時指令上來,而不需要重寫應用。在未來的穩定版中,很多Ivy引擎特有的API將會加入到公開API列表中,它們將會作為Angular Labs的一部分發布。
什麼時候一切就緒?
我們無法保證精確的釋出日期,並且本計劃所描述的內容可能隨時會發生修改。目前的計劃是:2019年4月進入RC,然後大概過一個月釋出8.0.0版本,屆時這些特性將會達到基本可用的狀態。我們將會利用Ivy的預覽版來驗證向下相容性,同時驗證那些可能會用到的自動遷移工具。
我們計劃在今年秋天釋出的下一個主版本里面開啟Ivy完整版,到時候每個人都能使用它。在9.0版本里面,我們將會預設啟用Ivy,並且不再提供自定義選項,因為我們將會把關注點放在向下相容性和支援現有專案上面。
對於9.0版本即將釋出的完整Ivy特性我們感到非常興奮,它將會為很多開發者開啟新世界的大門,也包括我們團隊自身。 一旦獲取到Ivy的最新進展,我們將會把最新的開發計劃、使用者體驗、新特性,以及API分享給開發者。
如果想獲取更多資訊,請隨時關注本部落格、twitter,或者來ng-conf 面談。
本文由“業餘小編”意譯改寫,轉載請獲取授權,原文連結:
https://blog.angular.io/a-plan-for-version-8-0-and-ivy-b3318dfc19f7?tdsourcetag=s_pcqq_aiomsgblog.angular.io blog.angular.ioAngular開發者中文論壇在這裡: