精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試官:說說Webpack中Loader和Plugin的區(qū)別?編寫Loader,Plugin的思路?

開發(fā) 前端
由于webpack基于發(fā)布訂閱模式,在運行的生命周期中會廣播出許多事件,插件通過監(jiān)聽這些事件,就可以在特定的階段執(zhí)行自己的插件任務(wù)

[[396986]]

一、區(qū)別

前面兩節(jié)我們有提到Loader與Plugin對應(yīng)的概念,先來回顧下

  • loader 是文件加載器,能夠加載資源文件,并對這些文件進行一些處理,諸如編譯、壓縮等,最終一起打包到指定的文件中
  • plugin 賦予了 webpack 各種靈活的功能,例如打包優(yōu)化、資源管理、環(huán)境變量注入等,目的是解決 loader 無法實現(xiàn)的其他事

從整個運行時機上來看,如下圖所示:

可以看到,兩者在運行時機上的區(qū)別:

  • loader 運行在打包文件之前
  • plugins 在整個編譯周期都起作用

在Webpack 運行的生命周期中會廣播出許多事件,Plugin 可以監(jiān)聽這些事件,在合適的時機通過Webpack提供的 API改變輸出結(jié)果

對于loader,實質(zhì)是一個轉(zhuǎn)換器,將A文件進行編譯形成B文件,操作的是文件,比如將A.scss或A.less轉(zhuǎn)變?yōu)锽.css,單純的文件轉(zhuǎn)換過程

二、編寫loader

在編寫 loader 前,我們首先需要了解 loader 的本質(zhì)

其本質(zhì)為函數(shù),函數(shù)中的 this 作為上下文會被 webpack 填充,因此我們不能將 loader設(shè)為一個箭頭函數(shù)

函數(shù)接受一個參數(shù),為 webpack 傳遞給 loader 的文件源內(nèi)容

函數(shù)中 this 是由 webpack 提供的對象,能夠獲取當前 loader 所需要的各種信息

函數(shù)中有異步操作或同步操作,異步操作通過 this.callback返回,返回值要求為 string 或者 Buffer

代碼如下所示:

  1. // 導出一個函數(shù),source為webpack傳遞給loader的文件源內(nèi)容 
  2. module.exports = function(source) { 
  3.     const content = doSomeThing2JsString(source); 
  4.      
  5.     // 如果 loader 配置了 options 對象,那么this.query將指向 options 
  6.     const options = this.query; 
  7.      
  8.     // 可以用作解析其他模塊路徑的上下文 
  9.     console.log('this.context'); 
  10.      
  11.     /* 
  12.      * this.callback 參數(shù): 
  13.      * error:Error | null,當 loader 出錯時向外拋出一個 error 
  14.      * content:String | Buffer,經(jīng)過 loader 編譯后需要導出的內(nèi)容 
  15.      * sourceMap:為方便調(diào)試生成的編譯后內(nèi)容的 source map 
  16.      * ast:本次編譯生成的 AST 靜態(tài)語法樹,之后執(zhí)行的 loader 可以直接使用這個 AST,進而省去重復生成 AST 的過程 
  17.      */ 
  18.     this.callback(null, content); // 異步 
  19.     return content; // 同步 

一般在編寫loader的過程中,保持功能單一,避免做多種功能

如less文件轉(zhuǎn)換成 css文件也不是一步到位,而是 less-loader、css-loader、style-loader幾個 loader的鏈式調(diào)用才能完成轉(zhuǎn)換

三、編寫plugin

由于webpack基于發(fā)布訂閱模式,在運行的生命周期中會廣播出許多事件,插件通過監(jiān)聽這些事件,就可以在特定的階段執(zhí)行自己的插件任務(wù)

在之前也了解過,webpack編譯會創(chuàng)建兩個核心對象:

  • compiler:包含了 webpack 環(huán)境的所有的配置信息,包括 options,loader 和 plugin,和 webpack 整個生命周期相關(guān)的鉤子
  • compilation:作為 plugin 內(nèi)置事件回調(diào)函數(shù)的參數(shù),包含了當前的模塊資源、編譯生成資源、變化的文件以及被跟蹤依賴的狀態(tài)信息。當檢測到一個文件變化,一次新的 Compilation 將被創(chuàng)建

如果自己要實現(xiàn)plugin,也需要遵循一定的規(guī)范:

  • 插件必須是一個函數(shù)或者是一個包含 apply 方法的對象,這樣才能訪問compiler實例
  • 傳給每個插件的 compiler 和 compilation 對象都是同一個引用,因此不建議修改
  • 異步的事件需要在插件處理完任務(wù)時調(diào)用回調(diào)函數(shù)通知 Webpack 進入下一個流程,不然會卡住

實現(xiàn)plugin的模板如下:

  1. class MyPlugin { 
  2.     // Webpack 會調(diào)用 MyPlugin 實例的 apply 方法給插件實例傳入 compiler 對象 
  3.   apply (compiler) { 
  4.     // 找到合適的事件鉤子,實現(xiàn)自己的插件功能 
  5.     compiler.hooks.emit.tap('MyPlugin', compilation => { 
  6.         // compilation: 當前打包構(gòu)建流程的上下文 
  7.         console.log(compilation); 
  8.          
  9.         // do something... 
  10.     }) 
  11.   } 

在 emit 事件發(fā)生時,代表源文件的轉(zhuǎn)換和組裝已經(jīng)完成,可以讀取到最終將輸出的資源、代碼塊、模塊及其依賴,并且可以修改輸出資源的內(nèi)容

參考文獻

https://webpack.docschina.org/api/loaders/

https://webpack.docschina.org/api/compiler-hooks/

https://segmentfault.com/a/1190000039877943

https://vue3js.cn/interview

 

 

責任編輯:武曉燕 來源: S每日一題
相關(guān)推薦

2025-03-07 02:00:00

webpackPlugin開發(fā)

2021-06-22 10:43:03

Webpack loader plugin

2021-05-31 05:36:43

WebpackJavaScript 前端

2024-09-20 12:25:16

Webpackchunkbundle

2021-08-12 07:49:25

Git 索引HEAD

2021-09-30 07:57:13

排序算法面試

2022-03-08 09:16:20

webpack前端開發(fā)

2021-06-29 09:47:34

ReactSetState機制

2024-11-19 15:13:02

2025-04-08 00:00:00

@AsyncSpring異步

2025-04-16 00:00:01

JWT客戶端存儲加密令

2023-12-27 18:16:39

MVCC隔離級別幻讀

2021-05-08 08:35:33

Webpack前端性能

2021-08-17 07:15:16

Git RebaseGit Merge面試

2025-03-10 00:00:00

property?attributeHTML

2025-03-10 11:40:00

前端開發(fā)HTML

2021-08-19 08:36:22

Git ResetGit Revert版本

2021-09-13 09:23:52

TypeScript命名空間

2021-10-15 09:53:12

工具

2021-05-06 14:34:12

Webpack熱更新程序
點贊
收藏

51CTO技術(shù)棧公眾號

国产真实乱偷精品视频免| 91精品丝袜国产高跟在线| 91麻豆国产福利精品| 欧美孕妇与黑人孕交| 亚洲午夜精品久久久久久高潮| 你懂得影院夜精品a| 亚洲欧洲国产日本综合| 国模精品一区二区三区| av首页在线观看| 午夜久久tv| 亚洲少妇激情视频| 午夜影院免费版| 亚洲黄色免费av| 亚洲视频一区二区免费在线观看| 国产精品综合久久久久久| 一级久久久久久| 一区视频在线| 中文字幕国产精品久久| 老司机午夜免费福利| 欧美大片1688网站| 亚洲不卡一区二区三区| 一区二区三区电影| 三级在线视频| 国产精品正在播放| 国产精品美女免费| 日本黄色片视频| 婷婷精品进入| 亚洲人成电影网| 95视频在线观看| 在线免费成人| 欧美婷婷六月丁香综合色| 日本福利视频一区| 91福利国产在线观看菠萝蜜| 国产日韩精品一区二区三区 | 91色乱码一区二区三区| 国产拍揄自揄精品视频麻豆| 成人午夜视频网站| 97婷婷大伊香蕉精品视频| 狂野欧美性猛交| 亚洲影院天堂中文av色| 精品久久久久久久久久久久包黑料 | 中文精品久久| 中文在线资源观看视频网站免费不卡 | 国产精品成人国产乱| 天天综合网网欲色| 日韩综合视频在线观看| 久久久久久成人网| 成人vr资源| 亚洲欧洲一区二区三区久久| 国产精品300页| 国产伦乱精品| 亚洲第一天堂av| 国产精品嫩草69影院| 精品一级视频| 日韩一区二区高清| 在线视频日韩欧美| www.久久久.com| 69堂精品视频| 亚洲天堂网站在线| 国产一区精品二区| 欧美一区二区私人影院日本| 91热视频在线观看| 精品一区二区三区四区五区| 日韩一区二区三区观看| 国产男女无遮挡猛进猛出| 麻豆一区在线| 亚洲成人aaa| 人妻激情偷乱频一区二区三区| 96sao在线精品免费视频| 日韩精品一区二区三区视频| 色哟哟视频在线| 老司机精品在线| 亚洲欧洲日产国产网站| 91狠狠综合久久久久久| 国产精品毛片一区二区在线看| www国产亚洲精品久久网站| 九九精品视频免费| 极品av少妇一区二区| 97av在线影院| 国产情侣免费视频| 激情伊人五月天久久综合| 91久久中文字幕| 日本人妻熟妇久久久久久| 91视频xxxx| 视频一区视频二区视频| 国产黄色在线免费观看| 亚洲国产欧美在线| 国产视频一区二区三区在线播放| 黄色精品视频网站| 欧美刺激脚交jootjob| 亚洲欧美日本一区| 日韩欧美高清在线播放| 欧美人与物videos| 九九精品免费视频| 激情综合网最新| 久精品国产欧美| 欧美极品另类| 精品国产91久久久| 日本高清一区二区视频| 精品深夜福利视频| 这里只有精品视频| 日韩欧美一区二区一幕| 麻豆91小视频| 精品国产aⅴ麻豆| 欧美尤物美女在线| 欧美日韩国产精品一区二区不卡中文| 天天色综合社区| 久久视频在线观看| 久久九九精品99国产精品| 天天操天天干视频| 国模娜娜一区二区三区| 玛丽玛丽电影原版免费观看1977| 久操视频在线播放| 一本色道久久综合亚洲精品按摩| 18禁一区二区三区| 成人网18免费网站| 欧美怡红院视频一区二区三区| 一级片视频免费| 91麻豆精品视频| 男女日批视频在线观看| 日韩精品第二页| 亚洲欧美色图片| 激情四射综合网| 美女免费视频一区二区| 免费在线成人av| 国内在线视频| 欧美丰满少妇xxxbbb| 国产成人福利在线| 中文在线一区| 国产一区二区免费电影| av香蕉成人| 欧美日韩亚洲综合| 97在线观看免费视频| 国产精品毛片一区二区三区| 69堂成人精品视频免费| 日韩在线资源| 欧美午夜精品一区| 久操视频免费看| 亚洲精品人人| 国产欧美一区二区三区另类精品 | 亚洲熟妇av一区二区三区| 51社区在线成人免费视频| 日韩在线播放一区| 亚洲一区二区三区高清视频| 中文字幕不卡在线| wwww.国产| 第一会所亚洲原创| 国产精品视频地址| 97电影在线看视频| 欧美日韩午夜在线| 男女男精品视频网站| 日本人妖一区二区| 亚洲国产成人不卡| www.国产精品| www.国产一区| 国产福利资源在线| 亚洲自拍偷拍麻豆| 一级黄色免费视频| 一本久道久久久| 精品人伦一区二区三区| 伊人久久在线| 国产一区二区久久精品| 中文字幕av网站| 国产精品国产三级国产普通话三级 | 国产成人综合亚洲网站| 激情六月天婷婷| 国产一区二区在线视频你懂的| 久久久久久久久综合| 无码国产精品高潮久久99| 精品国产乱码久久久久酒店| 国产三级视频网站| 日本亚洲最大的色成网站www| 亚洲精品一品区二品区三品区| 国产精品伦一区二区| 久久精品国产91精品亚洲| 国产亲伦免费视频播放| 亚洲午夜在线视频| 中文字幕第4页| 韩日av一区二区| 97超碰在线人人| 深爱激情久久| 91久久久久久久久久久久久| free性欧美16hd| 国产亚洲xxx| a级片在线播放| 欧美日韩激情美女| 国产三级在线观看完整版| 国产精品原创巨作av| 黄色动漫网站入口| 99tv成人| 国产一区在线观| 精品久久在线| 91av在线看| 免费黄网站在线播放| 精品国产sm最大网站| 中文永久免费观看| 亚洲国产成人av| 永久免费毛片在线观看| 国产成人aaa| 国产成人无码av在线播放dvd| 91精品国产自产拍在线观看蜜| 精品国产第一页| 国产精品国产三级在线观看| 2020久久国产精品| v片在线观看| 亚洲网站在线观看| 亚洲精品无码专区| 欧美美女bb生活片| 亚洲精品男人的天堂| 一区二区三区高清不卡| 国产调教在线观看| 91亚洲国产成人精品一区二区三| 日韩爱爱小视频| 久久久精品网| 少妇人妻无码专区视频| 亚洲久久久久| 亚洲免费久久| 一道本一区二区三区| av激情久久| 91精品国产一区二区在线观看 | 国产不卡精品| 国产精品亚洲美女av网站| 福利影院在线看| 久久久亚洲精品视频| 国产一二区在线观看| 亚洲最新中文字幕| 天堂在线中文网| 日韩免费看网站| 国产毛片一区二区三区va在线| 在线视频你懂得一区| 天天综合天天干| 亚洲成av人**亚洲成av**| 国产一级一片免费播放| 亚洲色图制服诱惑| 国产精品99久久久久久成人| 国产精品毛片久久久久久| 性欧美精品中出| 久久影院午夜片一区| 日本黄色录像片| 成人黄色网址在线观看| 性一交一黄一片| 国产电影精品久久禁18| 久久发布国产伦子伦精品| 国产在线一区二区综合免费视频| 九色porny自拍| 久久精品av麻豆的观看方式| jizz大全欧美jizzcom| 蜜臀av一区二区在线免费观看| 在线免费观看av的网站| 免费成人在线视频观看| 人人干人人干人人| 精品一区二区在线视频| 国产农村妇女精品久久| 国产精品一区免费视频| japan高清日本乱xxxxx| 国产精品一二二区| 欧美性生交xxxxx| 91丨porny丨最新| 成人免费看aa片| 国产视频一区不卡| 久久视频一区二区三区| 亚洲欧美另类图片小说| 日本精品人妻无码77777| 亚洲乱码中文字幕综合| 国产精品.www| 日本韩国一区二区三区| 中国黄色一级视频| 欧美狂野另类xxxxoooo| 精品人妻伦一二三区久久| 亚洲第一男人天堂| 每日更新在线观看av| 在线观看成人黄色| 成人video亚洲精品| 久久久久国产精品免费| 自拍一区在线观看| 国产美女91呻吟求| 97久久综合区小说区图片区| 久久精品二区| 91一区二区| 国产玉足脚交久久欧美| 老司机精品视频网站| 天天摸天天舔天天操| k8久久久一区二区三区| 亚洲黄色免费视频| 亚洲精品乱码久久久久久久久 | 欧美人体做爰大胆视频| www视频在线| 亚洲男人天堂网站| 97超碰在线公开在线看免费| 97精品在线视频| 国产精品伦一区二区| 国产精品一区二区三区在线观| 国产精品一区高清| av 日韩 人妻 黑人 综合 无码| 国产一级一区二区| 免费黄频在线观看| 久久夜色精品一区| 欧美成人免费观看视频| 欧亚洲嫩模精品一区三区| 性生活三级视频| 国产一区二区三区直播精品电影| 性欧美videos高清hd4k| 国产aⅴ夜夜欢一区二区三区| 精品国产乱码一区二区三区| 看欧美日韩国产| 欧美二区视频| 一区二区三区网址| 91在线视频播放地址| 日韩视频中文字幕在线观看| 色婷婷精品久久二区二区蜜臀av| 亚洲av无码一区二区乱子伦| 中日韩午夜理伦电影免费| 三级在线观看视频| 国产精品国产精品国产专区蜜臀ah | 亚洲精品国产综合区久久久久久久| 中文字幕在线免费| 91干在线观看| 91精品入口| 日韩精品一区二区三区电影| 日韩激情av在线| 朝桐光av一区二区三区| 亚洲一区二区三区视频在线| 在线视频 91| 亚洲视频专区在线| 欧美大胆a人体大胆做受| 成人做爰66片免费看网站| 91精品二区| 国产福利在线免费| 欧美国产精品一区二区| 黄色片视频免费| 日韩精品欧美国产精品忘忧草 | 天天干视频在线观看| 欧美精品情趣视频| 国产精品视频一区二区三区| 亚洲国产精品一区二区第一页| 久久激情一区| jizz欧美性20| 精品国产91久久久久久老师| 欧洲av在线播放| 国内精品在线一区| 国产成人福利av| 国产美女在线一区| 成人免费高清视频| 日韩成人一区二区三区| 亚洲第一精品福利| 97人澡人人添人人爽欧美| 精品国产乱码久久久久久蜜柚| 在线成人h网| a级一a一级在线观看| 亚洲成国产人片在线观看| 亚洲a视频在线| 欧美激情综合色综合啪啪五月| 亚洲国产欧美国产第一区| 久操手机在线视频| 成人性视频网站| 天堂中文在线网| 亚洲欧洲成视频免费观看| 99久久婷婷国产综合精品首页| 亚洲乱码国产乱码精品天美传媒| 美女任你摸久久| 青青草原在线免费观看| 亚洲精品一区二区三区香蕉| 乱馆动漫1~6集在线观看| 欧美国产一二三区| 日韩va欧美va亚洲va久久| 国产亚洲精品久久久久久豆腐| 日韩一区二区麻豆国产| 啊啊啊久久久| 日韩欧美一区二区在线观看| 久久激情五月婷婷| 激情五月婷婷在线| 日韩电影中文字幕| 日韩精品一区二区三区av| 一区二区冒白浆视频| 国产精品亚洲专一区二区三区| 国产一级片网址| 亚洲人av在线影院| 在线播放成人| 欧美色图色综合| 中文字幕亚洲成人| 黄色小视频免费在线观看| 日本精品免费观看| 图片小说视频色综合| a级一a一级在线观看| 欧美日韩在线播放三区| 高清电影在线免费观看| 欧美午夜精品久久久久久蜜| 麻豆成人久久精品二区三区小说| 国产一级做a爱免费视频| 国产亚洲精品一区二区| 国产一区二区三区亚洲综合 | 精油按摩中文字幕久久| 国产精品7777| 日韩在线免费观看视频| 加勒比色综合久久久久久久久| 我要看一级黄色大片| 亚洲成人av电影| 日本在线观看视频| 欧美三级网色| 国产福利电影一区二区三区|