1 webpack是什么?
Webpack是一個開源的JavaScript模塊打包工具,其最核心的功能是解決模塊之間的依賴,把各個模塊按照特定的規(guī)則和順序組織在一起,最終合并為一個JS文件(有時會有多個,這里討論的只是最基本的情況)。這個過程就叫作模塊打包。
2.webpack 的核心概念
entry: 入口
output: 輸出
loader: 模塊轉(zhuǎn)換器,用于把模塊原內(nèi)容按照需求轉(zhuǎn)換成新內(nèi)容
插件(plugins): 擴展插件,在webpack構(gòu)建流程中的特定時機注入擴展邏輯來改變構(gòu)建結(jié)果或做你想要做的事情
3有哪些常見的Loader?他們是解決什么問題的?
file-loader:把文件輸出到一個文件夾中,在代碼中通過相對 URL 去引用輸出的文件
url-loader:和 file-loader 類似,但是能在文件很小的情況下以 base64 的方式把文件內(nèi)容注入到代碼中去
source-map-loader:加載額外的 Source Map 文件,以方便斷點調(diào)試
image-loader:加載并且壓縮圖片文件
babel-loader:把 ES6 轉(zhuǎn)換成 ES5
css-loader:加載 CSS,支持模塊化、壓縮、文件導入等特性
style-loader:把 CSS 代碼注入到 JavaScript 中,通過 DOM 操作去加載 CSS。
eslint-loader:通過 ESLint 檢查 JavaScript 代碼
4有哪些常見的Plugin?他們是解決什么問題的?
define-plugin:定義環(huán)境變量
commons-chunk-plugin:提取公共代碼
uglifyjs-webpack-plugin:通過UglifyES壓縮ES6代碼
html-webpack-plugin:插件的基本作用就是生成html文件
copy-webpack-plugin:將單個文件或整個目錄復制到生成目錄
extract-text-webpack-plugin和mini-css-extract-plugin:用于抽離css
5Loader和Plugin的不同?
不同的作用
Loader直譯為"加載器"。Webpack將一切文件視為模塊,但是webpack原生是只能解析js文件,如果想將其他文件也打包的話,就會用到loader。 所以Loader的作用是讓webpack擁有了加載和解析非JavaScript文件的能力。
Plugin直譯為"插件"。Plugin可以擴展webpack的功能,讓webpack具有更多的靈活性。 在 Webpack 運行的生命周期中會廣播出許多事件,Plugin 可以監(jiān)聽這些事件,在合適的時機通過 Webpack 提供的 API 改變輸出結(jié)果。
不同的用法
Loader在module.rules中配置,也就是說他作為模塊的解析規(guī)則而存在。 類型為數(shù)組,每一項都是一個Object,里面描述了對于什么類型的文件(test),使用什么加載(loader)和使用的參數(shù)(options)
Plugin在plugins中單獨配置。 類型為數(shù)組,每一項是一個plugin的實例,參數(shù)都通過構(gòu)造函數(shù)傳入