Loader(加載器)
Loader用于對(duì)模塊的源代碼進(jìn)行轉(zhuǎn)換泥彤。loader 可以使你在加載模塊時(shí)預(yù)處理文件 蹦肴。loader 可以將文件從不同的語(yǔ)言(如 TypeScript)轉(zhuǎn)換為 JavaScript砚哗,或?qū)?nèi)聯(lián)圖像轉(zhuǎn)換為 data URL。
因?yàn)?webpack只能處理 JavaScript,如果要處理其他類型的文件妇拯,就需要使用 loader 進(jìn)行轉(zhuǎn)換,loader 本身就是一個(gè)函數(shù)洗鸵,接受源文件為參數(shù)越锈,返回轉(zhuǎn)換的結(jié)果。
Plugin(插件)
Plugin 是用來(lái)擴(kuò)展 Webpack 功能的膘滨。使用 plugin 豐富的自定義功能擴(kuò)展以及生命周期事件甘凭,可以控制打包流程的每個(gè)環(huán)節(jié)。
通過(guò)plugin火邓,webpack可以實(shí) loader 所不能完成的復(fù)雜功能丹弱。作用于整個(gè)構(gòu)建周期,實(shí)現(xiàn)對(duì) webpack 的自定義功能擴(kuò)展铲咨。
Loader和Plugin的區(qū)別
- loader是一個(gè)轉(zhuǎn)換器躲胳,將a文件進(jìn)行編譯輸出b文件,這里是操作文件纤勒。單純的文件轉(zhuǎn)換泛鸟。
- plugin是一個(gè)擴(kuò)展器,它豐富了webpack本身踊东,針對(duì)是loader結(jié)束后北滥,webpack打包的整個(gè)過(guò)程,它并不直接操作文件闸翅,而是基于事件機(jī)制工作再芋,會(huì)監(jiān)聽(tīng)webpack打包過(guò)程中的某些節(jié)點(diǎn),執(zhí)行任務(wù)