精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

国产一区二区三区中文字幕| 波多野结衣a v在线| 日本三级在线观看网站| 成人精品亚洲人成在线| 国产成人精品av在线| 日本成人精品视频| 国产精品对白| 欧美日韩三级一区二区| 搞av.com| 91精品专区| 91原创在线视频| 成人久久精品视频| 久久永久免费视频| 欧美日本一区二区视频在线观看 | av在线资源网| 高清国产一区二区| 国产精品久久色| 国产精品成人久久| 婷婷色综合网| 亚洲人成在线观看网站高清| 日本黄色大片在线观看| 国外成人福利视频| 欧美日韩亚洲一区二区三区| 成人免费看片视频在线观看| 国产youjizz在线| 成人激情动漫在线观看| 91社区国产高清| 小泽玛利亚一区二区三区视频| 国模吧视频一区| 久久精品亚洲94久久精品| 国产一级久久久久毛片精品| 米奇精品关键词| 日韩欧美高清dvd碟片| 亚洲综合av在线播放| av高清一区| 欧美日韩一区二区免费在线观看| 91麻豆精品国产91久久久| 成人黄色片视频网站| 一区二区三区黄| 日韩高清一区在线| 久久全球大尺度高清视频| www欧美com| 久久五月天小说| 一区二区三区四区在线观看视频| 国产精品久久无码| 99精品中文字幕在线不卡| 欧美一区二区在线看| 国产日韩欧美久久| 欧美日韩在线精品一区二区三区激情综合| 午夜精品久久久久久不卡8050| 亚洲五码在线观看视频| 国产调教视频在线观看| 国产精品免费看片| 亚洲国产另类久久久精品极度| 国产福利电影在线| 欧美激情自拍偷拍| 五月天久久狠狠| 成年女人的天堂在线| 国产欧美va欧美不卡在线| 欧美aaaaa喷水| 蜜桃视频在线免费| 国产精品视频线看| 中文字幕制服丝袜在线| 性网站在线观看| 亚洲一区二区免费视频| 国产亚洲黄色片| 免费看男女www网站入口在线 | 日本一级黄视频| 成人看av片| 亚洲国产精品久久人人爱蜜臀 | 91狠狠综合久久久| 影音先锋成人在线电影| 色综合久久中文字幕综合网小说| 欧美人妻一区二区| 99国产精品99久久久久久粉嫩| 26uuu另类亚洲欧美日本一| 欧美性猛交bbbbb精品| 欧美96一区二区免费视频| 成人国产精品色哟哟| www.av导航| 91亚洲男人天堂| 亚洲在线欧美| av中文字幕电影在线看| 色丁香久综合在线久综合在线观看| 日本888xxxx| 玖玖精品一区| 亚洲精品中文字幕有码专区| 极品蜜桃臀肥臀-x88av| 黄色亚洲精品| 国产成人精品在线视频| 99久久婷婷国产一区二区三区| 成人精品小蝌蚪| 婷婷久久五月天| 91禁在线看| 欧美在线一区二区| 日本wwwwwww| 欧美色爱综合| 欧美激情第三页| 中国女人真人一级毛片| 国产不卡视频一区| 天堂精品视频| 美女的胸无遮挡在线观看| 欧美无砖砖区免费| 日韩av手机在线播放| 欧美高清视频手机在在线| 久久久亚洲网站| 怡春院在线视频| 99re这里只有精品6| 中文字幕乱码一区二区三区 | 国产欧美日韩专区发布| 高清毛片aaaaaaaaa片| 欧美激情在线观看视频免费| 日本欧美视频在线观看| 亚洲国产伊人| 亚洲天堂网站在线观看视频| 国产福利久久久| 韩国精品久久久| 手机看片福利永久国产日韩| 成入视频在线观看| 欧美一级高清片| 亚洲一级黄色录像| 久久久噜噜噜久久狠狠50岁| 国产成人精品福利一区二区三区| 国产在线高清理伦片a| 色8久久精品久久久久久蜜| 最近中文字幕无免费| 综合久久一区| 91亚洲国产成人精品性色| 成人精品一区二区| 色国产综合视频| 少妇大叫太粗太大爽一区二区| 亚洲福利一区| 成人免费在线一区二区三区| 中文在线手机av| 欧美一区永久视频免费观看| 懂色av蜜臀av粉嫩av永久| 日本亚洲三级在线| 日韩福利在线| 影视一区二区三区| 亚洲天堂免费在线| 中文字幕永久在线| 久久久久久电影| 日韩免费高清在线| 精品国产精品国产偷麻豆| 日本精品一区二区三区在线播放视频 | 青娱乐国产精品| 国产真实乱子伦精品视频| 宅男一区二区三区| 粉嫩av国产一区二区三区| 色噜噜亚洲精品中文字幕| 中文字幕一二三四| 国产精品不卡在线| 婷婷激情小说网| 午夜激情一区| 国产一级二级三级精品| av今日在线| 日韩精品视频免费专区在线播放| 免费观看一区二区三区毛片| 26uuu精品一区二区三区四区在线| 欧美色图色综合| 国产欧美日韩精品一区二区免费 | 秋霞蜜臀av久久电影网免费| 久久久视频免费观看| 污污网站在线免费观看| 欧美视频在线看| 亚洲一级片在线播放| 国产综合一区二区| 国产黄色片免费在线观看| 欧美三级电影在线| 国产精品亚洲综合天堂夜夜| www视频在线看| 精品国产乱码久久久久久1区2区 | 日韩一区二区不卡视频| 国产成人午夜视频| a在线视频观看| 日韩久久精品| 成人欧美一区二区三区视频xxx | 91免费电影网站| 丁香花在线高清完整版视频 | 成人免费网站在线观看视频| 欧美精品一区二区精品网| 天天爽夜夜爽人人爽| 亚洲色图欧美在线| 亚洲天堂美女视频| 蜜臀av一区二区| www污在线观看| 精品毛片免费观看| 999视频在线免费观看| 国偷自产一区二区免费视频 | 春色校园综合激情亚洲| 国产香蕉一区二区三区在线视频 | 日韩高清有码在线| 亚洲一级av毛片| 亚洲国产精品久久不卡毛片 | 久久人体视频| 韩国一区二区三区美女美女秀| 成人综合网站| 欧美一区二区.| www久久日com| 亚洲性视频网址| 黄色aaa大片| 欧美日韩一级二级三级| 日本一级淫片色费放| ...av二区三区久久精品| 亚洲天堂网一区二区| 黄网站免费久久| 成人3d动漫一区二区三区| 国产精品二区影院| 日韩视频在线观看视频| 九色精品91| 国产欧美亚洲日本| 祥仔av免费一区二区三区四区| 国产91|九色| 性网站在线观看| 久久视频在线观看免费| 国产黄色片在线观看| 亚洲激情第一页| 亚洲欧美另类综合| 91精品国产黑色紧身裤美女| 国产美女www| 色综合久久久久| 粉嫩aⅴ一区二区三区| 一区二区三区日韩欧美精品| 日韩精品一区二区三区在线视频| 久久久精品综合| 岛国精品资源网站| 丁香另类激情小说| 最新中文字幕日本| 国产乱码精品一区二区三区忘忧草 | 亚洲日本理论电影| 国产精品一区二区av日韩在线| 国产视色精品亚洲一区二区| 91蝌蚪精品视频| 亚洲综合色av| 精品国产鲁一鲁****| 国产精品视频在线观看| 中韩乱幕日产无线码一区| 国产精品mp4| 天天免费亚洲黑人免费| 日韩av免费在线观看| 中文字幕在线视频久| 欧美综合国产精品久久丁香| 亚洲天堂av在线| 秋霞成人午夜鲁丝一区二区三区| 国产高潮在线| 庆余年2免费日韩剧观看大牛| 9i看片成人免费高清| 日本精品中文字幕| 另类中文字幕国产精品| 国产精品第1页| 国产69精品久久久久9999人| 成人春色激情网| 国产999精品在线观看| 91福利视频导航| 这里视频有精品| 精品久久久久久中文字幕动漫 | 色哟哟入口国产精品| 午夜视频在线看| 不卡av日日日| 国产91足控脚交在线观看| 45www国产精品网站| 国产精品亚洲一区二区三区在线观看 | 国产99久久久| 欧美日韩综合一区| 国产欧美久久久| 欧美精品一区二区三区蜜桃| 深夜福利在线观看直播| 国产一区二区三区在线| 九色porny丨首页在线| 久99九色视频在线观看| 国产色播av在线| 国产精品久久久久久av下载红粉| 亚洲综合视频| 国产一区二区三区av在线| 九九视频免费观看视频精品| 正在播放国产精品| 在线国产欧美| 亚洲中文字幕久久精品无码喷水| 蜜桃视频在线一区| av免费观看不卡| 中文字幕乱码亚洲精品一区| 欧美成人三级视频| 一本久久综合亚洲鲁鲁五月天| 一二三四区在线| 精品国产sm最大网站| av电影在线播放高清免费观看| 久久99久久99精品中文字幕| 婷婷午夜社区一区| 99re6在线| 日韩av二区| 免费毛片网站在线观看| 麻豆精品一区二区三区| 午夜不卡久久精品无码免费| 国产精品欧美综合在线| 亚洲视频免费播放| 欧美精品一卡两卡| 极品美乳网红视频免费在线观看| 米奇精品一区二区三区在线观看| 亚洲三级欧美| 999精品在线观看| 日韩www.| 国产三区在线视频| 国产一区欧美二区| 超碰男人的天堂| 一区二区三区中文字幕| 国产精品免费无遮挡无码永久视频| 日韩视频一区二区三区在线播放 | 亚洲福利天堂| 亚洲av综合色区| 蜜臀国产一区二区三区在线播放| 午夜av免费看| 亚洲一区二区三区在线| 亚洲综合精品视频| 国产亚洲精品久久久久动| wwwwxxxx在线观看| 亚洲综合一区二区不卡| 日本道不卡免费一区| 狠狠爱免费视频| 99久久综合精品| 久久激情免费视频| 欧美一级黄色片| 国产视频一区二区| 成人亚洲激情网| 欧美独立站高清久久| 色婷婷综合网站| 中文字幕成人av| 日韩综合在线观看| 亚洲天堂日韩电影| 视频二区不卡| 青青成人在线| 日韩精品一二三| 成人黄色免费网址| 在线观看日韩av先锋影音电影院| 日本一卡二卡四卡精品| 国产91精品视频在线观看| 秋霞影院一区二区三区| 美女日批免费视频| 99re视频精品| 黄色片中文字幕| 国产亚洲精品美女久久久久| 国产精品扒开腿做爽爽爽视频软件| 欧美极品一区二区| 日韩电影在线免费| 中文天堂资源在线| 欧美欧美欧美欧美| 国产在线高清视频| 999国产在线| 日韩视频免费| 免费黄色在线视频| 欧美性一级生活| 中文字幕日本在线| 91久久国产精品| 午夜欧美视频| 国产十八熟妇av成人一区| 午夜精品久久久久久| 黄色片在线播放| 国产精品丝袜久久久久久不卡| 99久久亚洲精品蜜臀| 亚洲天堂小视频| 午夜国产不卡在线观看视频| 欧美日韩免费做爰大片| 国产精品久久久久久久美男 | 日韩高清三区| 天天影视综合色| 亚洲欧美电影院| 黄色aaa毛片| 国产精品wwww| 中文字幕日韩欧美精品高清在线| 久久久久久久久久影视| 欧美日韩性视频| 97在线观看免费观看高清| 444亚洲人体| 午夜亚洲伦理| 日韩三级久久久| 日韩精品亚洲元码| 欧美高清免费| 久久久久久久午夜| 中文av一区特黄| 高清国产mv在线观看| 国产精品69精品一区二区三区| 天天久久综合| 成人性生活免费看| 欧美日韩黄色一区二区| 欧美人与性动交α欧美精品图片| 麻豆精品蜜桃一区二区三区| 精品夜夜嗨av一区二区三区| 欧美亚洲天堂网| 少妇精69xxtheporn| 久久精品国产亚洲5555| 久久久久国产一区| 香蕉影视欧美成人| 中文字幕日本在线观看| 精品无码久久久久国产| 国内成+人亚洲+欧美+综合在线| 午夜精品久久久久久久久久久久久蜜桃| 一区二区三区四区视频| 欧美美女啪啪| 性一交一黄一片| 欧美日韩激情一区二区| 毛片无码国产|