在最新的Angular 12中,官方將棄用稱為View Engine的舊版編譯和渲染工作管線,這項更改不需要開發者執行任何的動作,而相依於View Engine的函式庫,則能透過相容性編譯器ngcc繼續正常運作。

從去年開始,Angular就開始預設使用新的渲染和編譯工作管線Ivy,希望讓Angular能夠更簡單、快速,而且易於維護,官方一直在微調靜態檢查和動態建構的平衡,確保Angular能夠提供良好的類型檢查、建構最佳化,並且快速偵測變更。從版本9開始,新的Angular應用程式便已經預設啟用Ivy。

而為了讓先前使用View Engine函式庫的應用程式也能向後相容,官方開發了ngcc的相容編譯器,開發者會在創建新專案或安裝相依項目的時候,看到ngcc的運作。官方解釋,ngcc是編譯View Engine函式庫的方法,可以讓Ivy應用程式方便地使用,ngcc運作非常高效能,而且只會在必要的時候被呼叫,不過仍是安裝相依項目和執行專案額外的一個步驟。

由於存在相依於View Engine函式庫的意思,代表官方無法移除舊的實作,這樣不只增加維護成本,也是拖慢整體Angular發展的速度,所以作為轉換過渡時期,官方制定了Ivy函式庫發布計畫,來加速這個過程。當前開發人員可以將Ivy或View Engine用於應用程式或函式庫,而要將整個生態系統搬遷到Ivy,開發人員需要一個平滑的更新過程,官方觀察到,當前絕大多數的應用程式,都已經使用Ivy。

但是與此同時,所有的函式庫仍均為View Engine格式,透過相容性編譯器,開發人員可以在Ivy應用程式和函式庫中使用這些函式庫,而反過來View Engine是無法相依於Ivy。綜合以上結果,並且參考函式庫和應用程式作者的回饋,官方決定在Angular 12啟動加速轉移的計畫,官方棄用了View Engine,並且禁止使用View Engine創建應用程式的功能,而且新函式庫專案將預設使用Ivy。

為了確保相依Angular框架和元件的函式庫可以平穩過渡,官方會繼續使用View Engine格式發布,但是到了Angular 13,當大多數第三方函式庫已經使用Ivy時,官方便會計畫過渡Angular和元件。

目前所有專案都不需要為這些改變採取任何新措施,不會影響應用程式開發人員的日常開發工作,但建議仍在使用View Engine的開發者轉移到Ivy,而對於View Engine應用程式或是函式庫所相依的函式庫,官方建議作者繼續以View Engine格式發布,在所有相依的函式庫和應用程式搬遷到Ivy前,不要以Ivy函式庫發布。

熱門新聞

Advertisement