webpack loader

1、分類

2、執行順序

配置類型

執行順序是 loader1>loader2>loader3

3、使用方式

自己的第一個loader

同步loader

/*** loader 就是一個函數* 當webpack 解釋資源時, 會調用相應的loader去處理* loader 接收到文件內容作為參數,返回文件內容* @param {*} content 文件內容* @param {*} map SourceMap* @param {*} meta 別的loader 傳遞過來的數據*/
module.exports = function(content, map, meta){console.log('main.js 傳過來的數據', content);return content
}/*** 當需要傳遞參數給其他 loader 的loader 寫法*/// module.exports = function (content,map, meta) {
//     // 第一個參數: err 代表是否有錯誤
//     // 第二個參數:content 處理后的內容
//     // 第三個參數: source-map 繼續傳遞source-map
//     // 第四個參數:meta 給下一個loader傳遞參數
//     this.callback(null,content,map,meta);
// }

?會在vscode 終端看到

異步loader (同步loader不能調用異步方法)

module.exports = function(content, map, meta){const callback = this.async()setTimeout(()=>{console.log('異步操作');callback(null, content, map, meta)}, 1000)
}

?raw loader,處理圖片、svg等時會用到

// 同步異步操作均可以
module.exports = function(content, map, meta){console.log('raw-loader Buffer數據流', content);return content
}module.exports.raw = true

目前 只有 main.js 文件

console.log('hello word');

patch loader

執行順序

// pitch-loader1.js
module.exports = function(content, map, meta){console.log('pitch-loader1');return content
}module.exports.pitch = function(content, map, meta){console.log('pitch1');
}//  pitch-loader2.js
module.exports = function(content, map, meta){console.log('pitch-loader2');return content
}module.exports.pitch = function(content, map, meta){console.log('pitch2');
}// pitch-loader.js
module.exports = function(content, map, meta){console.log('pitch-loader3');return content
}module.exports.pitch = function(content, map, meta){console.log('pitch3');
}

webpack.config.js 配置

打印結果

如果patch中有return 則不糊執行后續的操作,而是直接返回到上一個loader執行,如果沒有就不用執行,下面是在loader中有返回值的意思,直接返回到loader執行操作

4、loader Api

this.getOptions 獲取options

?schema.json

打包后文件中就會多出坐著相關信息

5、簡單重寫一下常用的部分loader

babel-loader

const babel = require('@babel/core')
const schema = require("./schema.json")module.exports = function(content, map, meta){// 獲取webpack 使用這個loader 時的options配置項const callback = this.async()const options = this.getOptions(schema)babel.transform(content, options, function(err, result){if(err) callback(err)else callback(null, result.code)})
}

schema.json

{"type":"object","properties":{"presets":{"type": "array"}},"additionalProperties": false
}

webpack 中的使用

file-loader? (使用到this.emitFile函數)

?webpack 配置

stylle-loader

主要作用,通過js代碼創建一個style標簽 ,然后將樣式代碼加進去

這里? module.exports = function(){} 空函數即可

如果,想要更深一步學習loader, 可以去看看常用的loader的源碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161530.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161530.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161530.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Nginx 開源版安裝

下載 tar.gz安裝包,上傳。 解壓 [rootlocalhost ~]# tar zxvf nginx-1.21.6.tar.gz nginx-1.21.6/ nginx-1.21.6/auto/ nginx-1.21.6/conf/ nginx-1.21.6/contrib/ nginx-1.21.6/src/ ... ...安裝gcc [rootlocalhost nginx-1.21.6]# yum install -y gcc 已加載插件…

ios qt開發要點

目前關于ios qt的開發資料比較少,這里整理了幾個比較重要的開發要點,基于MacOS14 Xcode15 Qt15.5 cmake iphone真機。 cmake報錯,報錯信息如下 CMake Error at /Users/user/Qt/5.15.5/ios/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:91 (m…

C#Wpf關于日志的相關功能擴展

目錄 一、日志Sink(接收器) 二、Trace追蹤實現日志 三、日志滾動 一、日志Sink(接收器) 安裝NuGet包:Serilog Sink有很多種,這里介紹兩種: Console接收器(安裝Serilog.Sinks.Console); File接收器(安裝…

CSM32RV003:國產高精度16位ADC低功耗RISC-V內核MCU

目錄 高精度ADC工業應用工業數據采集應用CSM32RV003簡介主要特性 高精度ADC工業應用 高精度ADC即高精度模數轉換器,是一種能夠將輸入模擬信號轉換為數字信號的芯片,在多種消費電子、工業、醫療和科研領域都有廣泛應用。高精度ADC的主要特點是能夠提供高…

深度學習圖像修復算法 - opencv python 機器視覺 計算機競賽

文章目錄 0 前言2 什么是圖像內容填充修復3 原理分析3.1 第一步:將圖像理解為一個概率分布的樣本3.2 補全圖像 3.3 快速生成假圖像3.4 生成對抗網絡(Generative Adversarial Net, GAN) 的架構3.5 使用G(z)生成偽圖像 4 在Tensorflow上構建DCGANs最后 0 前言 &#…

前端 HTML 的 DOM 事件相關知識有哪些?

HTML 的 DOM 事件是指在網頁上發生的各種事件,如點擊、鼠標移動、鍵盤輸入等。 通過 JavaScript 腳本可以對這些事件進行監聽和處理,以實現交互效果。以下是一些常見的 DOM 事件及其相關知識點: 1、click:點擊事件,在…

vue3引入vuex基礎

一:前言 使用 vuex 可以方便我們對數據的統一化管理,便于各組件間數據的傳遞,定義一個全局對象,在多組件之間進行維護更新。因此,vuex 是在項目開發中很重要的一個部分。接下來讓我們一起來看看如何使用 vuex 吧&#…

linux文件I/O:文件鎖的概念、函數以及代碼實現

文件鎖是一種用來保證多個進程對同一個文件的安全訪問的機制。文件鎖可以分為兩種類型:建議性鎖和強制性鎖。建議性鎖是一種協作式的鎖,它只有在所有參與的進程都遵守鎖的規則時才有效。強制性鎖是一種強制式的鎖,它由內核或文件系統來強制執…

使用Pytorch從零開始構建RNN

在這篇文章中,我們將了解 RNN(即循環神經網絡),并嘗試通過 PyTorch 從頭開始??實現其中的部分內容。是的,這并不完全是從頭開始,因為我們仍然依賴 PyTorch autograd 來計算梯度并實現反向傳播&#xff0c…

Apache訪問控制

服務器相關的訪問控制 Options指令 Options指令是Apache服務器配置文件中的一個重要指令,它可以用于控制特定目錄啟用哪些服務器特性。Options指令可以在Apache服務器的核心配置、虛擬主機配置、特定目錄配置以及.htaccess文件中使用。 以下是一些常用的服務器特性選項: N…

Django(九、cookie與session)

文章目錄 一、cookie與session的介紹HTTP四大特性 cookiesession Django操作cookie三板斧基于cookie的登錄功能 一、cookie與session的介紹 在講之前我們先來回憶一下HTTP的四大特性 HTTP四大特性 1.基于請求響應 2.基于TIC、IP作用于應用層上的協議 3.無狀態 保存…

二叉查找(排序)樹你需要了解一下

簡介 二叉排序樹(Binary Sort Tree),又稱二叉查找樹(Binary Search Tree),亦稱二叉搜索樹,是一種重要的數據結構。 它有以下特性: 若左子樹不空,則左子樹上所有結點的…

目標檢測YOLO系列從入門到精通技術詳解100篇-【圖像處理】目標檢測

目錄 幾個高頻面試題目 如何在超大分辨率的圖片中檢測目標? 1當超大分辨率圖像邂逅目標檢測任務 2You Only Look Twice

邊緣計算多角色智能計量插座 x 資產顯示標簽:實現資產追蹤與能耗管理的無縫結合

越來越多智慧園區、智慧工廠、智慧醫院、智慧商業、智慧倉儲物流等企業商家對精細化、多元化智能生態應用場景的提升,順應國家節能減排、環保的時代潮流,設計一款基于融合以太網/WiFi/藍牙智能控制的智能多角色插座應運而生,賦予智能插座以遙…

大數據學習(23)-hive on mapreduce對比hive on spark

&&大數據學習&& 🔥系列專欄: 👑哲學語錄: 承認自己的無知,乃是開啟智慧的大門 💖如果覺得博主的文章還不錯的話,請點贊👍收藏??留言📝支持一下博主哦&#x1f91…

uniapp實現表單彈窗

uni.showModal({title: 刪除賬戶,confirmColor:#3A3A3A,cancelColor:#999999,confirmText:確定,editable:true,//顯示content:請輸入“delete”刪除賬戶,success: function (res) {console.log(res)if(res.confirm){if(res.contentdelete){console.log(123123123213)uni.setSto…

PCIE鏈路訓練-狀態跳轉1

A:12ms超時,或者再任何lane上檢測到Electrical Idle Exit; B: 1.發送“receiver detection”之后沒有一個lane的接收邏輯被rx檢測到 2.不滿足條件c,比如兩次detection出現差別; C:發送端在沒…

凸優化基礎與應用

諸神緘默不語-個人CSDN博文目錄 文章目錄 1. 線性規劃用SciPy求解 2. 二次規劃3. 半定規劃4. 錐規劃 凸優化是數學優化的一個重要分支,廣泛應用于各種工程和科學領域。它的核心特征在于優化問題的目標函數和約束條件是凸的,這使得找到全局最優解變得可行…

Ps:背景橡皮擦工具摳圖實例

背景橡皮擦工具 Background Eraser Tool由于是一個破壞性的工具(直接刪除像素)而少被人使用。 其實,它不僅是一個功能強大的摳圖工具,也是可以轉換為非破壞性運用的。 原圖(注:圖片來自網絡) 效…

微軟離Altman越近,離OpenAI就越遠!

大數據產業創新服務媒體 ——聚焦數據 改變商業 在OpenAI這場連續劇中(之所以說是連續劇,這個事情肯定沒完,后面肯定還會出續集),讓我倍感意外的是,Altman剛跟OpenAI分手,“離婚手續”都還沒辦…