tree-shaking

tree-shaking 是 webpack2 新增的一種功能

什么是 tree-shaking

從文件入口作為起點(diǎn),分析模塊的依賴(lài)關(guān)系,把沒(méi)有用掉的模塊刪掉

tree-shaking 原理

tree-shaking 是 DCE 的一種新的實(shí)現(xiàn)

DCE(dead code elimination)

編譯器會(huì)判斷哪些代碼不影響輸出,然后消除這些代碼

注意: tree-shaking 和傳統(tǒng)的 DCE 方法不太一樣,傳統(tǒng)的 DCE 消滅不可能執(zhí)行的代碼,而 tree-shaking 更關(guān)注消除沒(méi)有用到的代碼

js 的 DCE

在編譯型語(yǔ)言中,都是由編譯器將 dead code 從 AST 中刪除

關(guān)于 js 的 DCE,在 js 代碼被送到瀏覽器之前已經(jīng)做好了 DCE,這個(gè)工作是由代碼壓縮優(yōu)化工具 uglify 完成的

tree-shaking 的基礎(chǔ)

tree-shaking 的消除原理是依賴(lài)于 ES6 的模塊特性:

ES6 模塊的依賴(lài)關(guān)系是確定的,和運(yùn)行時(shí)的狀態(tài)無(wú)關(guān),可以不執(zhí)行代碼,從字面量上對(duì)代碼進(jìn)行分析

參考
https://juejin.cn/post/6844903544756109319

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容