久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

Webpack中Loader和Plugin的區別是什么

這篇文章主要介紹“Webpack中Loader和Plugin的區別是什么”,在日常操作中,相信很多人在Webpack中Loader和Plugin的區別是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Webpack中Loader和Plugin的區別是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

網站設計、成都網站制作的關注點不是能為您做些什么網站,而是怎么做網站,有沒有做好網站,給成都創新互聯公司一個展示的機會來證明自己,這并不會花費您太多時間,或許會給您帶來新的靈感和驚喜。面向用戶友好,注重用戶體驗,一切以用戶為中心。

Webpack中Loader和Plugin的區別是什么

一、區別

前面兩節我們有提到Loader與Plugin對應的概念,先來回顧下

  • loader 是文件加載器,能夠加載資源文件,并對這些文件進行一些處理,諸如編譯、壓縮等,最終一起打包到指定的文件中

  • plugin 賦予了 webpack 各種靈活的功能,例如打包優化、資源管理、環境變量注入等,目的是解決 loader 無法實現的其他事

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

Webpack中Loader和Plugin的區別是什么

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

  • loader 運行在打包文件之前

  • plugins 在整個編譯周期都起作用

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

對于loader,實質是一個轉換器,將A文件進行編譯形成B文件,操作的是文件,比如將A.scss或A.less轉變為B.css,單純的文件轉換過程

二、編寫loader

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

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

函數接受一個參數,為 webpack 傳遞給 loader 的文件源內容

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

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

代碼如下所示:

// 導出一個函數,source為webpack傳遞給loader的文件源內容 module.exports = function(source) {     const content = doSomeThing2JsString(source);          // 如果 loader 配置了 options 對象,那么this.query將指向 options     const options = this.query;          // 可以用作解析其他模塊路徑的上下文     console.log('this.context');          /*      * this.callback 參數:      * error:Error | null,當 loader 出錯時向外拋出一個 error      * content:String | Buffer,經過 loader 編譯后需要導出的內容      * sourceMap:為方便調試生成的編譯后內容的 source map      * ast:本次編譯生成的 AST 靜態語法樹,之后執行的 loader 可以直接使用這個 AST,進而省去重復生成 AST 的過程      */     this.callback(null, content); // 異步     return content; // 同步 }

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

如less文件轉換成 css文件也不是一步到位,而是 less-loader、css-loader、style-loader幾個  loader的鏈式調用才能完成轉換

三、編寫plugin

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

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

  • compiler:包含了 webpack 環境的所有的配置信息,包括 options,loader 和 plugin,和 webpack  整個生命周期相關的鉤子

  • compilation:作為 plugin  內置事件回調函數的參數,包含了當前的模塊資源、編譯生成資源、變化的文件以及被跟蹤依賴的狀態信息。當檢測到一個文件變化,一次新的 Compilation  將被創建

如果自己要實現plugin,也需要遵循一定的規范:

  • 插件必須是一個函數或者是一個包含 apply 方法的對象,這樣才能訪問compiler實例

  • 傳給每個插件的 compiler 和 compilation 對象都是同一個引用,因此不建議修改

  • 異步的事件需要在插件處理完任務時調用回調函數通知 Webpack 進入下一個流程,不然會卡住

實現plugin的模板如下:

class MyPlugin {     // Webpack 會調用 MyPlugin 實例的 apply 方法給插件實例傳入 compiler 對象   apply (compiler) {     // 找到合適的事件鉤子,實現自己的插件功能     compiler.hooks.emit.tap('MyPlugin', compilation => {         // compilation: 當前打包構建流程的上下文         console.log(compilation);                  // do something...     })   } }

在 emit 事件發生時,代表源文件的轉換和組裝已經完成,可以讀取到最終將輸出的資源、代碼塊、模塊及其依賴,并且可以修改輸出資源的內容

到此,關于“Webpack中Loader和Plugin的區別是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注創新互聯網站,小編會繼續努力為大家帶來更多實用的文章!

網站欄目:Webpack中Loader和Plugin的區別是什么
標題URL:http://www.js-pz168.com/article16/jeedgg.html

成都網站建設公司_創新互聯,為您提供定制網站網站收錄小程序開發網站制作網站營銷軟件開發

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都seo排名網站優化
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
国产精品一区视频| 欧美大片免费久久精品三p| 日韩精品综合一本久道在线视频| 欧美激情一区二区| 亚洲国产视频网站| 丁香天五香天堂综合| 农村寡妇一区二区三区| 欧美日韩一级大片网址| 国产欧美精品一区| 日韩电影在线一区二区三区| 99国产一区二区三精品乱码| 日韩欧美视频一区二区三区四区| 在线播放中文字幕一区| 亚洲少妇屁股交4| 国产一区二区三区电影在线观看| 国产在线精品日韩| 欧美日韩久久一区二区| 国产精品国产三级国产aⅴ入口| 免费成人av在线播放| www.av一区视频| 欧美综合欧美视频| 国产精品久久一卡二卡| 国内久久婷婷综合| 欧美精品一区二区三区在线看午夜| 欧美精品自拍偷拍| 亚洲欧美日韩国产手机在线 | 亚洲国产岛国毛片在线| 六月婷婷色综合| 国产一区视频观看| 在线电影一区二区三区| 夜夜嗨av一区二区三区四季av| 国产成人小视频| 五月婷婷综合色| 国产亚洲欧美日韩在线一区| 美女一区二区在线观看| 精品欧美一区二区精品久久| 日韩午夜三级在线| 日本在线不卡视频| 韩国成人av| 欧美一卡在线观看| 日日骚欧美日韩| 精品日韩欧美| 精品国产91九色蝌蚪| 人人精品人人爱| 快播日韩欧美| 久久久午夜电影| 狠狠色丁香久久婷婷综合丁香| 欧美日韩视频在线一区二区观看视频| 欧美videofree性高清杂交| 日本成人在线看| 欧美aaaaa喷水| 国产亚洲一区二区三区四区 | 精品国产aⅴ麻豆| 精品国产乱码久久| 美女视频黄频大全不卡视频在线播放| 日韩不卡av| 亚洲一区3d动漫同人无遮挡 | 国产成人夜色高潮福利影视| 欧美日韩精品综合| 久久精品人人做人人综合| 国产在线精品一区二区| 亚洲欧美一区二区原创| 国产精品人人做人人爽人人添| 成人免费观看视频| 欧美日韩国产影片| 天天色综合成人网| 欧美高清视频一区| 国产精品少妇自拍| av网站免费线看精品| 91精品国产综合久久精品图片 | 亚洲免费观看高清完整版在线观看 | 久久久久国色av免费看影院| 国产精品一品二品| 欧美性感一类影片在线播放| 亚洲高清不卡在线| 久久影院理伦片| 国产精品久久一卡二卡| 91香蕉视频mp4| 欧美刺激午夜性久久久久久久| 国内欧美视频一区二区| 欧洲视频一区二区| 日本欧美一区二区| 中文字幕日韩精品久久| 亚洲一区二区三区四区在线| 精品国产乱码久久久久久88av| 国产人久久人人人人爽| 91社区在线播放| 精品久久久久久久久久久久久久久久久 | 日韩一级片在线观看| 国产精品88av| 3atv一区二区三区| 精品一区二区影视| 欧美三电影在线| 久久精品国产秦先生| 欧洲av一区二区嗯嗯嗯啊| 日日欢夜夜爽一区| 致1999电视剧免费观看策驰影院| 亚洲成人av电影| 亚洲精品久久区二区三区蜜桃臀 | 国产精品18久久久久久vr| 欧美日本一区二区在线观看| 精品综合久久久久久8888| 欧美日韩一区三区| 极品少妇一区二区| 欧美精品xxxxbbbb| 国产精品 日产精品 欧美精品| 欧美精品久久一区二区三区| 精品一区二区免费视频| 欧美日韩一区二区三区免费看| 精品一区二区三区免费毛片爱| 欧美日韩情趣电影| 国产黑丝在线一区二区三区| 日韩欧美一区在线| av电影在线观看一区| 久久久精品tv| 国产乱码精品一区二区三区卡| 国产精品动漫网站| 欧美三日本三级少妇三99| 亚洲国产精品久久不卡毛片| 亚洲一区二区三区乱码| 麻豆91在线观看| 在线播放亚洲一区| a美女胸又www黄视频久久| 国产亚洲一区二区三区四区| 国产九色91| 亚洲一区二区三区视频在线 | 好吊色欧美一区二区三区 | 日本一区二区动态图| 久久av免费观看| 亚洲电影你懂得| 欧美中文一区二区三区| 国产不卡在线视频| 久久在线观看免费| 国外成人在线视频网站| 亚洲一区二区三区中文字幕在线| 在线综合视频网站| 国产一区二区三区美女| 精品久久免费看| 国产精品12| 亚洲一区在线观看免费观看电影高清 | 一区二区三区高清在线| 91久久精品网| 国产a级毛片一区| 日本一区二区三区四区| 欧美一区二区视频17c| 奇米亚洲午夜久久精品| 日韩亚洲欧美中文三级| 国产精品免费区二区三区观看| 亚洲综合丁香婷婷六月香| 日本丰满少妇一区二区三区| 豆国产96在线|亚洲| 国产午夜精品久久久久久久 | 欧美日韩另类国产亚洲欧美一级| 成人国产亚洲欧美成人综合网| 国产精品毛片久久久久久| 一区二区不卡视频| 国产精品亚洲第一区在线暖暖韩国| 久久老女人爱爱| 日韩电影大全在线观看| 久久99精品一区二区三区| 欧美精品一区二区三区视频| 美女被啪啪一区二区| 美国十次综合导航| 精品国产百合女同互慰| 欧美日韩国产综合视频在线| 黄色日韩网站视频| 欧美国产日韩亚洲一区| 在线观看日韩羞羞视频| 成人激情午夜影院| 一区二区三区日韩精品视频| 欧美日韩激情一区| 国产99午夜精品一区二区三区| 日韩经典中文字幕一区| 精品久久久久久无| 天堂一区二区三区| 国产成+人+日韩+欧美+亚洲| 亚洲色图.com| 欧美精品高清视频| 久久久99爱| 国产专区欧美精品| 亚洲视频在线一区二区| 欧美日韩国产区一| 国产精品区免费视频| 麻豆91在线播放免费| 国产精品乱码一区二三区小蝌蚪| 色综合网色综合| 999国产视频| 免费人成网站在线观看欧美高清| 久久久噜噜噜久噜久久综合| 一本一道久久a久久精品 | 欧美国产欧美综合| 欧美亚洲免费在线一区| 国内视频一区二区| 国产一区二区三区高清播放| 亚洲欧美日韩中文播放| 日韩视频免费观看高清完整版在线观看| 欧美精品一区二区三区久久| 成人性生交大片| 舔着乳尖日韩一区| 国产欧美综合在线观看第十页 |