loader 和plugin的區別是什麼?

2021-10-24 09:53:49 字數 1100 閱讀 6097

參考:webpack原理

前端面試-webpack篇

1、使用webpack一般配置什麼?

webpack是乙個靜態模組處理器,當其處理應用程式時,會遞迴的構建乙個關係依賴圖,其中包含應用程式需要的每個模組,然後把所有這些模組打包成乙個或多個包

2、 使用webpack的打包過程

初始化:啟動構建,讀取和合併引數,載入plugin,例項化complier

編譯:從entry出發,針對每個module序列呼叫對應的loader去翻譯檔案內容,再找到該module依賴的module,遞迴地進行編譯處理

輸出:對編譯後的module組合成chunk,把chunk轉換成檔案,輸出到檔案系統

3、常用的loader

4、常用的plugin

5、 loader和plugin的區別

兩者都是為了擴充套件webpack的功能。loader它只專注於轉化檔案(transform)這乙個領域,完成壓縮,打包,語言翻譯; 而plugin不僅只侷限在打包,資源的載入上,還可以打包優化和壓縮,重新定義環境變數等

loader執行在打包檔案之前(loader為在模組載入時的預處理檔案);plugins在整個編譯週期都起作用

乙個loader的職責是單一的,只需要完成一種轉換。乙個loader其實就是乙個node.js模組。當需要呼叫多個loader去轉換乙個檔案時,每個loader會鏈式的順序執行

在webpack執行的生命週期中會廣播出許多事件,plugin會監聽這些事件,在合適的時機通過webpack提供的api改變輸出結果

6、webpack ,gulp和grunt

grunt和gulp是基於任務和流(task、stream),找到乙個(或一類)檔案,對其做一系列鏈式操作,更新流上的資料, 整條鏈式操作構成了乙個任務,多個任務就構成了整個web的構建流程。

從構建思路上來說,gulp和grunt需要開發者將整個前端構建過程拆分成多個task,並合理控制所有task的呼叫關係; webpack需要開發者找到入口,並需要清楚對於不同的資源應該使用什麼loader做何種解析和加工

loader1 loader的配置和執行順序

配置單個loader請見上乙個檔案 陣列形式 let path require path module.exports resolveloader module 物件形式 let path require path module.exports resolveloader module 一般情況下,...

Loader的整體結構

loader 的整體結構。1 loader被bootsector載入到了baseofloader,偏移位址offsetofloader。純實體地址baseofloaderphyaddr。2loader的功能0 呼叫中斷,將得到的記憶體資訊,存入資料buf中。loader的功能1 載入kernel.b...

Grid 「操作」列的plugin

儘管ext的常用設計是把對grid記錄的操作放在tbar或者bbar上,當總有人的需求與這個不一樣。希望在每一條記錄的後面,新增一列 操作 對記錄進行管理 修改 刪除等 於是,在參考了checkbox 的plugin以後,就可以完成上面的任務了。外掛程式的 grid3 operate col 的cs...