webpack 面試題

1. webpack3和webpack4的區(qū)別

1.1. mode/–mode參數(shù)
新增了mode/--mode參數(shù)來表示是開發(fā)還是生產(chǎn)(development/production)
production 側(cè)重于打包后的文件大小峦椰,development側(cè)重于goujiansud
1.2. 移除loaders失仁,必須使用rules(在3版本的時候loaders和rules 是共存的但是到4的時候只允許使用rules)
1.3. 移除了CommonsChunkPlugin (提取公共代碼),用optimization.splitChunks和optimization.runtimeChunk來代替
1.4. 支持es6的方式導(dǎo)入JSON文件们何,并且可以過濾無用的代碼

let jsonData = require('./data.json')
import jsonData from './data.json'
import { first } from './data.json' // 打包時只會把first相關(guān)的打進去

1.5. 升級happypack插件(happypack可以進行多線程加速打包)
1.6. ExtractTextWebpackPlugin調(diào)整萄焦,建議選用新的CSS文件提取kiii插件mini-css-extract-plugin,production模式,增加 minimizer

2. loader 和 plugin 不同

2.1. loader是使wenbpack擁有加載和解析非js文件的能力
2.2. plugin 可以擴展webpack的功能拂封,使得webpack更加靈活茬射。可以在構(gòu)建的過程中通過webpack的api改變輸出的結(jié)果

3. webpack構(gòu)建流程

3.1. 初始化參數(shù)冒签,從配置文件和shell語句中讀到的參數(shù)合并在抛,得到最后的參數(shù)
3.2. 開始編譯:用合并得到的參數(shù)初始化complier對象,加載是所有配置的插件萧恕,執(zhí)行run方法開始編譯
3.3. 確定入口刚梭,通過entry找到入口文件
3.4. 編譯模塊,從入口文件出發(fā)票唆,調(diào)用所有配置的loader對模塊進行解析翻譯朴读,在找到該模塊依賴的模塊進行處理
3.5. 完成模塊編譯,得到每個模塊被翻譯之后的最終的內(nèi)容和依賴關(guān)系
3.6. 輸出資源走趋,根據(jù)入口和模塊之間的依賴關(guān)系衅金,組裝成一個個包含多個模塊的chunk,在把每個chunk轉(zhuǎn)換成一個單獨的文件加載到輸出列表
3.7. 輸出完成簿煌,確定輸出的路徑和文件名氮唯,把內(nèi)容寫到文件系統(tǒng)中
在以上過程中,webpack會在特定的時間點廣播出特定的事件姨伟,插件在艦艇感興趣的事件后會執(zhí)行特定的邏輯惩琉,改變webpack的運行結(jié)果

4. webpack 熱加載執(zhí)行原理

?夺荒?瞒渠??

5. 如何利用webpack來優(yōu)化前端性能

5.1. 壓縮代碼般堆。uglifyJsPlugin 壓縮js代碼, mini-css-extract-plugin 壓縮css代碼
5.2. 利用CDN加速诚啃,將引用的靜態(tài)資源修改為CDN上對應(yīng)的路徑淮摔,可以利用webpack對于output參數(shù)和loader的publicpath參數(shù)來修改資源路徑
5.3. 刪除死代碼(tree shaking),css需要使用Purify-CSS
5.4. 提取公共代碼始赎。webpack4移除了CommonsChunkPlugin (提取公共代碼)和橙,用optimization.splitChunks和optimization.runtimeChunk來代替

6. 什么是bundle,什么是chunk,什么是module?

bundle:有webpack打包出來的文件
chunk:webpack在進行模塊的依賴分析的時候造垛,代碼分割出來的代碼塊
module:開發(fā)中的單個模塊

7. webpack-dev-server和http服務(wù)器如nginx有什么區(qū)別?

webpack-dev-server使用內(nèi)存來存儲webpack開發(fā)環(huán)境下的打包文件魔招,并且可以使用模塊熱更新,他比傳統(tǒng)的http服務(wù)對開發(fā)更加簡單高效五辽。

8. DefinePlugin

DefinePlugin :允許創(chuàng)建一個在編譯時可以配置的全局變量

9. DllPlugin

使用DllPlugin可以減少基礎(chǔ)模塊編譯次數(shù)办斑,動態(tài)鏈接庫插件,其原理是吧網(wǎng)頁依賴的基礎(chǔ)模塊抽離出來打包到dll文件中,當(dāng)需要導(dǎo)入的模塊存在于某個dll中時乡翅,這個模塊不再被打包鳞疲,而是去dll中獲取。在dll中大多包含的時常用的第三方模塊蠕蚜,只要這些模塊版本不升級尚洽,就只需要被編譯一次。
注意
DllPlugin參數(shù)中的name必須要和output.library值保持一致靶累,并且生成的mainfest文件中會引用output.library值

10. happyPack開啟多線程loader轉(zhuǎn)換

運行在node.js之上的webpack時單線程模型腺毫,也就是只能一個一個文件進行處理,不能并行處理挣柬,happypack可以將任務(wù)分解給多個子進程潮酒,最后將結(jié)果發(fā)給主進程,js是單線程模型凛忿,只能通過這種多線程的方式提高性能

參考文件:
https://segmentfault.com/a/1190000015883378

作者:月半女那
鏈接:http://www.reibang.com/p/e80d38661358
來源:簡書
著作權(quán)歸作者所有澈灼。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處店溢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叁熔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子床牧,更是在濱河造成了極大的恐慌荣回,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戈咳,死亡現(xiàn)場離奇詭異心软,居然都是意外死亡,警方通過查閱死者的電腦和手機著蛙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門删铃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人踏堡,你說我怎么就攤上這事猎唁。” “怎么了顷蟆?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵诫隅,是天一觀的道長。 經(jīng)常有香客問我帐偎,道長逐纬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任削樊,我火速辦了婚禮豁生,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己沛硅,他們只是感情好眼刃,可當(dāng)我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著摇肌,像睡著了一般擂红。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上围小,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天昵骤,我揣著相機與錄音,去河邊找鬼肯适。 笑死变秦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的框舔。 我是一名探鬼主播蹦玫,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼刘绣!你這毒婦竟也來了樱溉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤纬凤,失蹤者是張志新(化名)和其女友劉穎福贞,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體停士,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡挖帘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了恋技。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拇舀。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蜻底,靈堂內(nèi)的尸體忽然破棺而出骄崩,到底是詐尸還是另有隱情,我是刑警寧澤朱躺,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布刁赖,位于F島的核電站搁痛,受9級特大地震影響长搀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸡典,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一源请、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦谁尸、人聲如沸舅踪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抽碌。三九已至,卻和暖如春决瞳,著一層夾襖步出監(jiān)牢的瞬間货徙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工皮胡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留痴颊,地道東北人。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓屡贺,卻偏偏與公主長得像蠢棱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子甩栈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,974評論 2 355