原文:https://www.qdfuns.com/article/51117/c4f317d0f2802bfc1bb007a1419d88bd.html
<article class="md_view lazy_content" data-dt-parent="" style="box-sizing: border-box; display: block; color: rgb(69, 69, 69); margin-bottom: 1.5625rem; min-height: 25rem;">
1:什么是webpack和grunt和gulp有什么不同
答案:Webpack是一個(gè)模塊打包器骏全,他可以遞歸的打包項(xiàng)目中的所有模塊苍柏,最終生成幾個(gè)打包后的文件。他和其他的工具最大的不同在于他支持code-splitting姜贡、模塊化(AMD试吁,ESM,CommonJs)楼咳、全局分析熄捍。
2:什么是bundle,什么是chunk,什么是module?
答案:bundle是由webpack打包出來的文件母怜,chunk是指webpack在進(jìn)行模塊的依賴分析的時(shí)候余耽,代碼分割出來的代碼塊。module是開發(fā)中的單個(gè)模塊苹熏。
3:什么是Loader?什么是Plugin?
答案:
1)Loaders是用來告訴webpack如何轉(zhuǎn)化處理某一類型的文件宾添,并且引入到打包出的文件中
2)Plugin是用來自定義webpack打包過程的方式,一個(gè)插件是含有apply方法的一個(gè)對象柜裸,通過這個(gè)方法可以參與到整個(gè)webpack打包的各個(gè)流程(生命周期)缕陕。
4:如何可以自動(dòng)生成webpack配置?
答案: webpack-cli /vue-cli /etc ...腳手架工具
5:webpack-dev-server和http服務(wù)器如nginx有什么區(qū)別?
答案:webpack-dev-server使用內(nèi)存來存儲(chǔ)webpack開發(fā)環(huán)境下的打包文件疙挺,并且可以使用模塊熱更新扛邑,他比傳統(tǒng)的http服務(wù)對開發(fā)更加簡單高效。
6:什么 是模塊熱更新铐然?
答案:模塊熱更新是webpack的一個(gè)功能蔬崩,他可以使得代碼修改過后不用刷新瀏覽器就可以更新,是高級版的自動(dòng)刷新瀏覽器搀暑。
7:什么是長緩存沥阳?在webpack中如何做到長緩存優(yōu)化?
答案:瀏覽器在用戶訪問頁面的時(shí)候自点,為了加快加載速度桐罕,會(huì)對用戶訪問的靜態(tài)資源進(jìn)行存儲(chǔ),但是每一次代碼升級或是更新桂敛,都需要瀏覽器去下載新的代碼功炮,最方便和簡單的更新方式就是引入新的文件名稱。在webpack中可以在output縱輸出的文件指定chunkhash,并且分離經(jīng)常更新的代碼和框架代碼术唬。通過NameModulesPlugin或是HashedModuleIdsPlugin使再次打包文件名不變薪伏。
8:什么是Tree-shaking?CSS可以Tree-shaking嗎?
答案:Tree-shaking是指在打包中去除那些引入了,但是在代碼中沒有被用到的那些死代碼粗仓。在webpack中Tree-shaking是通過uglifySPlugin來Tree-shaking
JS嫁怀。Css需要使用Purify-CSS设捐。