webpack常見面試問題整理

1.webpack是什么?

webpack一個(gè)用于現(xiàn)代javascript應(yīng)用程序的靜態(tài)模塊打包工具

2.webpack的配置有哪些微王?

入口(entry),出口(output),mode,plugin,loader屡限;

入口:指示webpack使用哪個(gè)模塊作為構(gòu)建其內(nèi)部依賴圖的開始。默認(rèn)值是:‘./src/index.js’炕倘。

出口:告訴webpack在哪里輸出它所創(chuàng)建的bundle,以及如何命名這些文件钧大,主要輸出文件的默認(rèn)值是‘./dist/main.js’。

mode:提供 mode 配置選項(xiàng)激才,告知 webpack 使用相應(yīng)模式的內(nèi)置優(yōu)化,development(開發(fā)環(huán)境),production(生產(chǎn)環(huán)境),none(不使用任何默認(rèn)優(yōu)化選項(xiàng))拓型。

loader:這是 webpack 開箱可用的自帶能力额嘿,loader 用于轉(zhuǎn)換某些類型的模塊(編譯兼容)瘸恼。

plugin:打包優(yōu)化,資源管理册养,注入環(huán)境變量等(能力擴(kuò)展)东帅。

3.webpack的作用?

模塊打包球拦,編譯兼容靠闭,能力擴(kuò)展

模塊打包】擦叮可以將不同模塊的文件打包整合在一起愧膀,并且保證它們之間的引用正確,執(zhí)行有序谣光。利用打包我們就可以在開發(fā)的時(shí)候根據(jù)我們自己的業(yè)務(wù)自由劃分文件模塊檩淋,保證項(xiàng)目結(jié)構(gòu)的清晰和可讀性。

編譯兼容萄金。通過webpack的Loader機(jī)制蟀悦,不僅僅可以幫助我們對代碼做polyfill,還可以編譯轉(zhuǎn)換諸如.less, .vue, .jsx這類在瀏覽器無法識別的格式文件氧敢,讓我們在開發(fā)的時(shí)候可以使用新特性和新語法做開發(fā)日戈,提高開發(fā)效率。

能力擴(kuò)展孙乖。通過webpack的Plugin機(jī)制浙炼,我們在實(shí)現(xiàn)模塊化打包和編譯兼容的基礎(chǔ)上份氧,可以進(jìn)一步實(shí)現(xiàn)諸如按需加載,代碼壓縮等一系列功能弯屈,幫助我們進(jìn)一步提高自動(dòng)化程度半火,工程效率以及打包輸出的質(zhì)量。

4.模塊打包的運(yùn)行原理季俩?

1钮糖、讀取webpack的配置參數(shù);
2酌住、啟動(dòng)webpack店归,創(chuàng)建Compiler對象并開始解析項(xiàng)目;
3酪我、從入口文件(entry)開始解析消痛,并且找到其導(dǎo)入的依賴模塊,遞歸遍歷分析都哭,形成依賴關(guān)系樹秩伞;
4、對不同文件類型的依賴模塊文件使用對應(yīng)的Loader進(jìn)行編譯欺矫,最終轉(zhuǎn)為Javascript文件纱新;
5、整個(gè)過程中webpack會(huì)通過發(fā)布訂閱模式穆趴,向外拋出一些hooks脸爱,而webpack的插件即可通過監(jiān)聽這些關(guān)鍵的事件節(jié)點(diǎn),執(zhí)行插件任務(wù)進(jìn)而達(dá)到干預(yù)輸出結(jié)果的目的未妹。

5.sourceMap的原理簿废?

提到sourceMap,很多小伙伴可能會(huì)立刻想到Webpack配置里邊的devtool參數(shù)络它,以及對應(yīng)的eval族檬,eval-cheap-source-map等等可選值以及它們的含義。除了知道不同參數(shù)之間的區(qū)別以及性能上的差異外化戳,我們也可以一起了解一下sourceMap的實(shí)現(xiàn)方式单料。
sourceMap是一項(xiàng)將編譯、打包迂烁、壓縮后的代碼映射回源代碼的技術(shù)看尼,由于打包壓縮后的代碼并沒有閱讀性可言,一旦在開發(fā)中報(bào)錯(cuò)或者遇到問題盟步,直接在混淆代碼中debug問題會(huì)帶來非常糟糕的體驗(yàn)藏斩,sourceMap可以幫助我們快速定位到源代碼的位置,提高我們的開發(fā)效率却盘。sourceMap其實(shí)并不是Webpack特有的功能狰域,而是Webpack支持sourceMap媳拴,像JQuery也支持souceMap。

6.有哪些常用的loader?

raw-loader:加載文件原始內(nèi)容(utf-8)
file-loader:把文件輸出到一個(gè)文件夾中兆览,在代碼中通過相對 URL 去引用輸出的文件 (處理圖片和字體)
url-loader:與 file-loader 類似屈溉,區(qū)別是用戶可以設(shè)置一個(gè)閾值,大于閾值會(huì)交給 file-loader 處理抬探,小于閾值時(shí)返回文件 base64 形式編碼 (處理圖片和字體)
source-map-loader:加載額外的 Source Map 文件子巾,以方便斷點(diǎn)調(diào)試
svg-inline-loader:將壓縮后的 SVG 內(nèi)容注入代碼中
image-loader:加載并且壓縮圖片文件
json-loader 加載 JSON 文件(默認(rèn)包含)
handlebars-loader: 將 Handlebars 模版編譯成函數(shù)并返回
babel-loader:把 ES6 轉(zhuǎn)換成 ES5
ts-loader: 將 TypeScript 轉(zhuǎn)換成 JavaScript
awesome-typescript-loader:將 TypeScript 轉(zhuǎn)換成 JavaScript,性能優(yōu)于 ts-loader
sass-loader:將SCSS/SASS代碼轉(zhuǎn)換成CSS
css-loader:加載 CSS小压,支持模塊化线梗、壓縮、文件導(dǎo)入等特性
style-loader:把 CSS 代碼注入到 JavaScript 中怠益,通過 DOM 操作去加載 CSS
postcss-loader:擴(kuò)展 CSS 語法仪搔,使用下一代 CSS,可以配合 autoprefixer 插件自動(dòng)補(bǔ)齊 CSS3 前綴
eslint-loader:通過 ESLint 檢查 JavaScript 代碼
tslint-loader:通過 TSLint檢查 TypeScript 代碼
mocha-loader:加載 Mocha 測試用例的代碼
coverjs-loader:計(jì)算測試的覆蓋率
vue-loader:加載 Vue.js 單文件組件
i18n-loader: 國際化
cache-loader: 可以在一些性能開銷較大的 Loader 之前添加蜻牢,目的是將結(jié)果緩存到磁盤里.

7.有哪些常見的plugin烤咧?

define-plugin:定義環(huán)境變量 (Webpack4 之后指定 mode 會(huì)自動(dòng)配置)
ignore-plugin:忽略部分文件
html-webpack-plugin:簡化 HTML 文件創(chuàng)建 (依賴于 html-loader)
web-webpack-plugin:可方便地為單頁應(yīng)用輸出 HTML,比 html-webpack-plugin 好用
terser-webpack-plugin: 支持壓縮 ES6
webpack-parallel-uglify-plugin: 多進(jìn)程執(zhí)行代碼壓縮抢呆,提升構(gòu)建速度
mini-css-extract-plugin: 分離樣式文件煮嫌,CSS 提取為獨(dú)立文件,支持按需加載 (替代extract-text-webpack-plugin)
serviceworker-webpack-plugin:為網(wǎng)頁應(yīng)用增加離線緩存功能
clean-webpack-plugin: 目錄清理
ModuleConcatenationPlugin: 開啟 Scope Hoisting
speed-measure-webpack-plugin: 可以看到每個(gè) Loader 和 Plugin 執(zhí)行耗時(shí)
webpack-bundle-analyzer: 可視化 Webpack 輸出文件的體積 (業(yè)務(wù)組件镀娶、依賴第三方模塊)

參考文章:https://juejin.cn/post/6844904094281236487#heading-0

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末立膛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子梯码,更是在濱河造成了極大的恐慌,老刑警劉巖好啰,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轩娶,死亡現(xiàn)場離奇詭異,居然都是意外死亡框往,警方通過查閱死者的電腦和手機(jī)鳄抒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來椰弊,“玉大人许溅,你說我怎么就攤上這事”妫” “怎么了贤重?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長清焕。 經(jīng)常有香客問我并蝗,道長祭犯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任滚停,我火速辦了婚禮沃粗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘键畴。我一直安慰自己最盅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布起惕。 她就那樣靜靜地躺著檩禾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疤祭。 梳的紋絲不亂的頭發(fā)上盼产,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機(jī)與錄音勺馆,去河邊找鬼戏售。 笑死,一個(gè)胖子當(dāng)著我的面吹牛草穆,可吹牛的內(nèi)容都是我干的灌灾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼悲柱,長吁一口氣:“原來是場噩夢啊……” “哼锋喜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起豌鸡,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嘿般,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后涯冠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炉奴,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年蛇更,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瞻赶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡派任,死狀恐怖砸逊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掌逛,我是刑警寧澤师逸,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站颤诀,受9級特大地震影響字旭,放射性物質(zhì)發(fā)生泄漏对湃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一遗淳、第九天 我趴在偏房一處隱蔽的房頂上張望拍柒。 院中可真熱鬧,春花似錦屈暗、人聲如沸拆讯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽种呐。三九已至,卻和暖如春弃甥,著一層夾襖步出監(jiān)牢的瞬間爽室,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工淆攻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阔墩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓瓶珊,卻偏偏與公主長得像啸箫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子伞芹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Vuejs部分 1.vue優(yōu)點(diǎn)忘苛? 答:輕量級框架:只關(guān)注視圖層,是一個(gè)構(gòu)建數(shù)據(jù)的視圖集合唱较,大小只有幾十kb扎唾; 簡單...
    NaN2019閱讀 1,033評論 0 0
  • css的重繪與回流 重繪:當(dāng)節(jié)點(diǎn)需要更改外觀而不會(huì)影響布局。 回流:DOM結(jié)構(gòu)的修改引發(fā)DOM幾何尺寸變化的時(shí)候绊汹,...
    _claus閱讀 65,056評論 2 58
  • 隨著現(xiàn)代前端開發(fā)的復(fù)雜度和規(guī)模越來越龐大稽屏,已經(jīng)不能拋開工程化來獨(dú)立開發(fā)了,如react的jsx代碼必須編譯后才能在...
    coderfl閱讀 259評論 0 0
  • 0 HTML5相關(guān) websocket WebSocket 使用ws或wss協(xié)議西乖,Websocket是一個(gè)持久化的...
    可愛多小姐閱讀 885評論 0 0
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭坛增,有人歡樂有人憂愁获雕,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,544評論 28 53