開源前端打包工具Webpack,在2018年推出Webpack 4,歷經將近3年,現在釋出了Webpack 5.0.0,官方在這個版本做出了部分破壞性更新,並且為即將到來的功能,進行了一些架構上的重構,官方提到,鼓勵使用者立即更新,並且回報碰到的問題,他們將會積極的修復。

Webpack 5其中一個破壞性變更,便是刪除自動Node.js Polyfill,Polyfill是指那些實作瀏覽器不支援的原生API程式碼。由於早期Webpack的目標,是要能夠在瀏覽器中,執行大多數的Node.js模組,不過現在模組生態發生變化,許多模組都是以前端為目標開發。

Webpack 4與之前的版本,附帶了許多Node.js核心模組的Polyfill,一旦模組使用到了任何核心模組,對應核心模組就會自動啟用,雖然Polyfill使撰寫Node.js程式變得簡單,但官方解釋,這樣的做法必須要將巨大的Polyfill,添加到程式包(Bundle)中,使得程式包變得肥大,但現在很多情況,並不需要這些Polyfill。

因此官方決定在Webpack 5中,停止自動將Polyfill添加到程式包中,並且專注在前端相容的模組上,目標是改善無法使用Node.js核心模組的網頁平臺相容性。官方呼籲開發者,儘可能使用與前端相容的模組,必要的時候,可以手動添加Polyfill。

而Webpack 5還加入了一個稱為模組聯邦(Module Federation)的功能,讓多個Webpack程式包能夠協同工作。Webpack區分本地端模組和遠端模組,本地端模組就是普通模組,為程式碼建置(Build)的一部分,而遠端模組則是在執行時,才從容器載入的模組。在Webpack 5中,每個程式碼建置都可充當容器,並且也能把其他程式碼建置當作容器,因此所有程式碼建置都可以從模組所屬容器載入模組。

官方解釋,從執行時的角度來看,來自不同程式包會拼接成為巨大的連接模組圖(Graph),而從開發人員的角度來看,將可以從遠端的程式碼建置匯入模組,並且以最小程度的限制使用。

熱門新聞

Advertisement