什么是webpack和grunt和gulp有什么不同殖卑?
webpack是一個(gè)模塊打包器袍暴,他可以遞歸的打包項(xiàng)目中的所有模塊煎谍,最終生成幾個(gè)打包后的文件攘蔽。它和其他工具最大的不同在于它支持code-splitting(代碼分割)、模塊化(AMD,ESM,CommonJS)開(kāi)發(fā)呐粘、全局分析(他會(huì)分析整個(gè)項(xiàng)目下跟你應(yīng)用有關(guān)的模塊)满俗。
什么是bundle,chunk,module?
bundle是由webpack打包出來(lái)的最終文件事哭。chunk是webpack進(jìn)行模塊的依賴分析時(shí)候漫雷,代碼分割出來(lái)的代碼塊瓜富。module是開(kāi)發(fā)中的單個(gè)模塊鳍咱。
什么是loader、plugin?
loaders是用來(lái)告訴webpack如何轉(zhuǎn)化處理某一類型的文件与柑,并且引入到打包出的文件中谤辜。plugin是用來(lái)自定義打包過(guò)程的方式,一個(gè)插件一定含有apply方法价捧,通過(guò)這個(gè)方法參與到整個(gè)打包流程丑念。
如何自動(dòng)生成webpack配置?
webpack-cli、vue-cli
webpack-dev-server和http服務(wù)器如nginx有什么區(qū)別结蟋?
webpack-dev-servers使用內(nèi)存來(lái)儲(chǔ)存webpack開(kāi)發(fā)環(huán)境下的打包文件脯倚,并且可以使用模塊熱更新,比傳統(tǒng)http服務(wù)對(duì)開(kāi)發(fā)更加高效嵌屎。
模塊熱更新推正?
它是webpack的一個(gè)功能,可以使得代碼修改過(guò)后不用刷新瀏覽器就可以更新宝惰,是高級(jí)版的自動(dòng)刷新瀏覽器植榕。
什么是長(zhǎng)緩存?
瀏覽器在用戶訪問(wèn)頁(yè)面時(shí)候尼夺,為了加快訪問(wèn)速度尊残,都會(huì)對(duì)用戶訪問(wèn)的靜態(tài)資源進(jìn)行儲(chǔ)存,但每一次代碼升級(jí)和更新淤堵,都需要瀏覽區(qū)去下載新的代碼寝衫,最方便和簡(jiǎn)單的更新方式就是引入新的文件名稱。在webpack中可以在output給文件指定chunkhash拐邪,并且分離經(jīng)常更新的代碼和框架代碼慰毅,通過(guò)namedModulesPlugin再次使打包文件名不變。
什么是tree-shaking? css可以tree-shaking嗎庙睡?
指打包中去除那些引入了但在代碼中沒(méi)用到的死代碼事富。在wepack中js treeshaking通過(guò)UglifyJsPlugin來(lái)進(jìn)行技俐,css中通過(guò)purify-CSS來(lái)進(jìn)行.