面試題: Webpack 的 plugin 和 loader 有什麼區別
webpack 的打包原理
- 識別入口檔案
- 通過逐層識別模組依賴(Commonjs、amd或者es6的import,webpack都會對其進行分析,來獲取程式碼的依賴)
- webpack做的就是分析程式碼,轉換程式碼,編譯程式碼,輸出程式碼
- 最終形成打包後的程式碼
什麼是 loader
loader 是檔案載入器,能夠載入資原始檔,並對這些檔案進行一些處理,諸如編譯、壓縮等,最終一起打包到指定的檔案中。
- 處理一個檔案可以使用多個 loader,loader 的載入順序和配置順序是相反的
- 第一個執行的 loader 接收原始檔的內容作為引數,下一個 loader 接收前一個 loader 的返回值作為引數,最後一個 loader 會返回此模組的 javaScript 的原始碼
什麼是 plugin
在 webpack 執行的生命週期中會廣播很多的事件( hooks中的事件監聽 ),plugin 可以監聽這些事件(在 apply 方法中監聽 hooks 的宣告週期),在合適的時機通過 webpack 提供的 Api 改變輸出結果 。
loader 和 plugin 的區別
對於 loader 來說,他是一個轉換器,把 A 檔案編譯轉換成 B 檔案,這裡只做單純的檔案轉換的工作
plugin 是一個擴充套件器,他豐富了 webpack 本身,在 webpack 的打包過程中,它並不直接操作檔案,而是訂閱 webpack 的宣告週期,執行更廣泛的操作。
參考文章:
https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/308
相關文章
- Webpack中Loader和Plugin的區別和編寫思路WebPlugin
- 深入淺出webpack -- loader和plugin原理及區別WebPlugin
- 說說Loader和Plugin的區別?編寫Loader,Plugin的思路?Plugin
- webpack loader和plugin編寫WebPlugin
- webpack3-loader和plugin的概念理解WebPlugin
- 【Java面試】IO和NIO有什麼區別?Java面試
- java面試題之Thread的run()和start()方法有什麼區別Java面試題thread
- 面試題:VueRouter中的 hash 模式和 history 模式有什麼區別面試題Vue模式
- 面試題總結:Queue 中 poll()和 remove()有什麼區別?面試題REM
- 測試面試題:cookie/session/token 分別表示什麼意思,有什麼區別?面試題CookieSession
- 面試官:react和vue有什麼區別嗎?面試ReactVue
- 多執行緒面試題之sleep()和wait()方法有什麼區別?執行緒面試題AI
- 面試官:Java的重寫和過載有什麼區別?面試Java
- 面試突擊:MVCC 和間隙鎖有什麼區別?面試MVC
- 「每天一道面試題」sleep方法和wait方法有什麼區別?面試題AI
- #如何看待問“a = a + b和a += b有什麼區別”的Java面試官?Java面試
- 【Java面試】Mybatis中#{}和${}的區別是什麼?Java面試MyBatis
- 面試官:BIO、NIO、AIO是什麼,他們有什麼區別?面試AI
- 回顧webpack在vue.config.js中寫loader和pluginWebVueJSPlugin
- iOS面試題-load 和 initlize的區別iOS面試題
- nginx面試題-nginx和apache的區別Nginx面試題Apache
- 遊戲測試和軟體測試有什麼區別?遊戲
- 《包你懂系列》類鎖和物件鎖到底有什麼區別,面試重點題型物件面試
- webpack和vite的區別,為什麼vite啟動速度比webpack快?WebVite
- shim和polyfill有什麼區別
- vue和react有什麼區別?VueReact
- modbus和tcp有什麼區別?TCP
- Jsp和Servlet有什麼區別?JSServlet
- SpringBoot和Spring有什麼區別?Spring Boot
- Cache 和 Buffer 有什麼區別?
- RPA和IPA有什麼區別
- int 和 Integer 有什麼區別
- rancher 和 Kubernetes有什麼區別?
- QPS和TPS有什麼區別?
- Hifi和ONT 有什麼區別
- Iterator和ListIterator有什麼區別
- DOM和BOM有什麼區別?
- xpath和dom有什麼區別?