WebPack可以看做是模塊打包機(jī):它做的事情是号杏,分析你的項(xiàng)目結(jié)構(gòu)忿危,找到JavaScript模塊以及其它的一些瀏覽器不能直接運(yùn)行的拓展語言(Scss镊靴,TypeScript等),并將其打包為合適的格式以供瀏覽器使用锉桑。
為什要使用WebPack:
今的很多網(wǎng)頁其實(shí)可以看做是功能豐富的應(yīng)用排霉,它們擁有著復(fù)雜的JavaScript代碼和一大堆依賴包。為了簡化開發(fā)的復(fù)雜度民轴,前端社區(qū)涌現(xiàn)出了很多好的實(shí)踐方法
a:模塊化攻柠,讓我們可以把復(fù)雜的程序細(xì)化為小的文件;
b:類似于TypeScript這種在JavaScript基礎(chǔ)上拓展的開發(fā)語言:使我們能夠?qū)崿F(xiàn)目前版本的JavaScript不能直接使用的特性,并且之后還能能裝換為JavaScript文件使瀏覽器可以識別后裸;
c:scss瑰钮,less等CSS預(yù)處理器
這些改進(jìn)確實(shí)大大的提高了我們的開發(fā)效率,但是利用它們開發(fā)的文件往往需要進(jìn)行額外的處理才能讓瀏覽器識別,而手動處理又是非常繁瑣的微驶,這就為WebPack類的工具的出現(xiàn)提供了需求浪谴。
WebPack的工作方式:
Webpack會把我們的項(xiàng)目當(dāng)做一個整體开睡,通過一個給定的主文件(如: index.js),Webpack將從這個 給定的主文件 開始找到你的項(xiàng)目的所有依賴文件苟耻,使用loaders處理它們篇恒。最后打包成一個或多個瀏覽器可識別的JavaScript文件.
同時支持CommonJS和AMD模塊;
串聯(lián)式模塊加載器以及插件機(jī)制凶杖,讓其具有更好的靈活性和擴(kuò)展性胁艰,例如提供對CoffeeScript、ES6的支持智蝠;
可以基于配置或者智能分析打包成多個文件腾么,實(shí)現(xiàn)公共模塊或者按需加載;支持對CSS杈湾,圖片等資源進(jìn)行打包解虱,從而無需借助Grunt或Gulp
開發(fā)時在內(nèi)存中完成打包,性能更快毛秘,完全可以支持開發(fā)過程的實(shí)時打包需求