成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

tree shaking簡(jiǎn)單分析

jasperyang / 1992人閱讀

摘要:是的模塊特性,奠定了的實(shí)現(xiàn)基礎(chǔ)。首先會(huì)分析文件項(xiàng)目里具體哪些代碼被引入了,哪些沒有引入,然后將真正引入的代碼打包進(jìn)去,最后沒有使用到的代碼自然就不會(huì)存在了。

文章梗概

什么是tree shaking

為什么需要tree shaking

tree shaking原理

什么是tree shaking

tree shaking首先是由rollup的作者提出的,它是DCE(dead code elimination)的一個(gè)實(shí)現(xiàn),通過tree shaking的分析,可以使你代碼里沒有使用的代碼全部刪除。然而它又區(qū)別于普通的dec,這里作者有一個(gè)比喻很形象

imagine that you made cakes by throwing whole eggs into the mixing bowl and smashing them up, instead of cracking them open and pouring the contents out. Once the cake comes out of the oven, you remove the fragments of eggshell, except that’s quite tricky so most of the eggshell gets left in there.

簡(jiǎn)單翻譯一下就是,如果將dec比作制作蛋糕,傳統(tǒng)的dec做法就是,將整個(gè)雞蛋丟進(jìn)碗里攪拌,然后放進(jìn)烤箱,烤完之后從做好的蛋糕里,找到不需要的蛋殼扔掉,而tree shaking是將雞蛋打破把蛋黃等有用的東西丟進(jìn)碗里攪拌,最后直接做出蛋糕。

為什么需要tree shaking

主要還是為了減少頁面的加載時(shí)間,將無用的代碼刪除,減少js包的大小,從而減少用戶等待的時(shí)間,使用戶不因?yàn)槁L(zhǎng)的等待而離開。
那為什么已經(jīng)有了dec,還要做tree shaking呢,根據(jù)作者的意思是,由于js靜態(tài)語法分析的局限性,從已有代碼里去刪除代碼不如去尋找真正使用的代碼來的好。

tree shaking實(shí)現(xiàn)的原理

其實(shí)關(guān)于tree shaking的實(shí)現(xiàn)原理上文多少都有提到,用一句話解釋就是,找到你整個(gè)代碼里真正使用的代碼,打包進(jìn)去,那么沒用的代碼自然就剔除了。
然而事情并非說的那么簡(jiǎn)單,我們?nèi)绾沃滥男┐a有用,哪些代碼沒用呢?其實(shí)tree shaking得以實(shí)現(xiàn),是依賴es6的module模塊的。是es6的模塊特性,奠定了tree shaking的實(shí)現(xiàn)基礎(chǔ)。
關(guān)于es6 module的特性,大概有如下幾點(diǎn):

必須寫在最外層,不能寫在函數(shù)里

import的語句具有和var一樣的提升(hoist)特性。

具體還有哪些特性可以查一下文檔。

tree shaking首先會(huì)分析文件項(xiàng)目里具體哪些代碼被引入了,哪些沒有引入,然后將真正引入的代碼打包進(jìn)去,最后沒有使用到的代碼自然就不會(huì)存在了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/83947.html

相關(guān)文章

  • webpack4 系列教程(九): CSS Tree Shaking

    摘要:按照我們的仿真的環(huán)境,最終之后的效果應(yīng)該是打包后的文件不含有樣式類。如果忘記了它的用法,請(qǐng)查看系列教程六處理系列教程五處理所以,我們的文件如下安裝完相關(guān)插件后,我們需要在的配置中引用第三部分定義的代碼。 教程所示圖片使用的是 github 倉庫圖片,網(wǎng)速過慢的朋友請(qǐng)移步 原文地址 有空就來看看個(gè)人技術(shù)小站, 我一直都在 0. 課程介紹和資料 本次課程的代碼目錄(如下圖所示):s...

    趙連江 評(píng)論0 收藏0
  • webpack4 系列教程(九): CSS Tree Shaking

    摘要:按照我們的仿真的環(huán)境,最終之后的效果應(yīng)該是打包后的文件不含有樣式類。如果忘記了它的用法,請(qǐng)查看系列教程六處理系列教程五處理所以,我們的文件如下安裝完相關(guān)插件后,我們需要在的配置中引用第三部分定義的代碼。 教程所示圖片使用的是 github 倉庫圖片,網(wǎng)速過慢的朋友請(qǐng)移步 原文地址 有空就來看看個(gè)人技術(shù)小站, 我一直都在 0. 課程介紹和資料 本次課程的代碼目錄(如下圖所示):s...

    superw 評(píng)論0 收藏0
  • 你的Tree-Shaking并沒什么卵用

    摘要:升級(jí)之后,項(xiàng)目的壓縮包并沒有什么明顯變化。這里可以參考下阮老師介紹的基本語法的循環(huán)是通過遍歷器迭代的,循環(huán)數(shù)組時(shí)并非是,然后通過下標(biāo)尋值。樓主好奇為什么不能消除未引用的類。樓主我的代碼沒什么副作用啊。 本文將探討tree-shaking在當(dāng)下(webpack@3, babel@6 以下)的現(xiàn)狀,以及研究為什么tree-shaking依舊舉步維艱的原因,最終總結(jié)當(dāng)下能提高tree-sha...

    cncoder 評(píng)論0 收藏0
  • 帶著問題學(xué)習(xí)webpack

    摘要:在學(xué)習(xí)過程中把自己看到的,學(xué)過的一些東西總結(jié)出來,供大家參考。在學(xué)習(xí)之前必須了解的幾個(gè)概念。通過或是使再次打包文件名不變。在中是通過來來需要使用 這段時(shí)間一直在學(xué)習(xí)webpack,感覺webpack的功能太強(qiáng)大了。在學(xué)習(xí)過程中把自己看到的,學(xué)過的一些東西總結(jié)出來,供大家參考。在學(xué)習(xí)webpack之前必須了解的幾個(gè)概念。 什么是webpack和grunt和gulp有什么不同 Webpac...

    guyan0319 評(píng)論0 收藏0
  • 釋放webpack的真正潛力

    摘要:檢查的時(shí)候發(fā)現(xiàn)中的確用到了,所以不會(huì)把去掉。在項(xiàng)目中,注意要把設(shè)置,避免將模塊轉(zhuǎn)為規(guī)范。引入的模塊包,也必須是符合規(guī)范,并且在最新的中加了一條限制,即在中定義,這也是為了避免出現(xiàn)導(dǎo)致模塊內(nèi)部的一些函數(shù)執(zhí)行后影響全局環(huán)境,卻被去除掉的情況。 在上周末廣州舉辦的feday中,webpack的核心開發(fā)者Sean在介紹webpack插件系統(tǒng)原理時(shí),隆重介紹了一個(gè)中國(guó)學(xué)生于Google夏令營(yíng),在...

    xioqua 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<