国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【W(wǎng)ebpack】預(yù)處理器 - loader配置介紹

這篇具有很好參考價(jià)值的文章主要介紹了【W(wǎng)ebpack】預(yù)處理器 - loader配置介紹。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

預(yù)處理器 (loader) ,的主要功能是賦予了 Webpack 可處理不同資源類型的能力,極大豐富了其可擴(kuò)展性。

一個(gè)Web工程通常會包含HTML、JS、CSS、模板、圖片、字體等多種類型的靜態(tài)資源,并且這些資源之間都存在著某種聯(lián)系。對于 Webpack 來說,所有這些靜態(tài)資源都是模塊,可以像加載一個(gè)JS文件一樣去加載它們,如在index.js中加載style.css:

//index.js
import './style.css'

這個(gè)style.css雖然是被加載在js文件中,但其實(shí)是可以被打包并生成在輸出資源目錄下,對index.js 文件也不會產(chǎn)生質(zhì)性的影響。這句引用的實(shí)際意義是描述了JS 文件與 CSS 文件之間的依賴關(guān)系。

在實(shí)際開發(fā)中,有時(shí)某個(gè)頁面用到了組件,不光要加載JS文件,還要加載樣式,而通過Webpack我們可以采用一種更簡潔的方式來表達(dá)這種依賴關(guān)系

// 。/u1/calendar/index.js
1mport './style.scss'; //引用組件自身樣式

// ./page/home/index.js
import Calendar from './ui/calendar/index.js';
import './styles.css' ;// 引用頁面自身樣式

可以看到,在calendar的JS中加載了其組件自身的樣式,而對于頁面來說只要載calendar/index.js 即可(以及頁面自身的樣式),不需要額引入組件的樣式。讓W(xué)ebpack維護(hù)模塊間的關(guān)系可以使工程結(jié)構(gòu)更加直觀,代碼的可維護(hù)性更強(qiáng)。

loader 概述

每個(gè)loader本質(zhì)上都是一個(gè)函數(shù)。在 Webpack 4之前,函數(shù)的輸人和輸出都必須為字符串; 在Webpack 4之后,loader也同時(shí)支持抽象語法樹 (AST)的傳遞,通過這種方法來減少重復(fù)的代碼解析。用公式表達(dá) loader的本質(zhì)則為以下形式:

output = loader(input)

舉一個(gè)例子,當(dāng)我們使用babel-loader將ES6+的代碼轉(zhuǎn)化為ES5時(shí),上面的公式如下:

ES5 =babel-loader(ES6+)

loader 可以是鏈?zhǔn)降?/strong>。我們可以對一種資源設(shè)置多個(gè)loader,第一個(gè)loader 的輸入是文件源碼,之后所有 loader 的輸入都為上一個(gè)loader 的輸出。公式如下:

output = loaderA(loaderB(loaderC(input)))

如在工程中編譯SCSS時(shí),我們可能需要如下loader:

Style 標(biāo)簽=style-loader(css-loader(sass-loader(SCSS)))

loader 的配置

要注意loader 做的實(shí)際上是一個(gè)預(yù)處理的工作。

loader的引入

假設(shè)我們要處理CSS,首先依照 Webpack“一切皆模塊”的思想,從一個(gè)JS文件加載一個(gè)CSS文件。

// app.js
import './style.css';

// style.css
body
	text-align; center;
	padding: 100px;
	color: #fff;
	background-color: #09c;
}

此時(shí)工程中還沒有任何 loader,如果直接打包會看到報(bào)錯提示

Webpack 無法處理 CSS語法,因此拋出了一個(gè)錯誤,并提示需要使用一個(gè)合適loader來處理這種文件。

下面把css-loader加到工程中。loader都是一些第三方npm模塊,Webpack身并不包含任何loader,因此使用loader的第一步就是先從npm安裝它。在工程目下執(zhí)行命令:

npm install css-loader

接下來我們將 loader引人工程中,具體配置如下:

module.exports = {
	// ...
	module: {
		rules: {
			test: /\.csss/,
			use: {'css-loader'},
		}
	}
}

loader相關(guān)的配置都在module對象中,其中module.rules 代表了模塊的處理規(guī)則。每條規(guī)則內(nèi)部可以包含很多配置項(xiàng),這里我們只使用了最重要的兩項(xiàng)一testuse

test
test可接收一個(gè)正則表達(dá)式或者一個(gè)元素為正則表達(dá)式的數(shù)組,只有正則配上的模塊才會使用這條規(guī)則。在本例中是匹配所有以css 結(jié)尾的文件。

use
use可接收一個(gè)數(shù)組,數(shù)組包含該規(guī)則所使用的 loader。在本例中只配置了一個(gè)css-loader,在只有一個(gè)loader 時(shí)也可以簡化為字符串“css-loader”。

此時(shí)我們再進(jìn)行打包,之前的錯誤應(yīng)該已經(jīng)消失了,但是 CSS 的樣式仍然沒有在頁面上生效。這是因?yàn)閏ss-loader 的作用僅僅是處理CSS 的各種加載語法,如果要使樣式起作用還需要 style-loader來把樣式插人頁面。css-loade與style-loader通常是配合在一起使用的

鏈?zhǔn)絣oader
在處理某一類資源時(shí)我們都需要使用多個(gè) loader。就比如上面的例子,用css-loader處理CSS的各類加載語法,再使用style-loader 來將樣式字符串包裝成style標(biāo)簽插入頁面。
配置如下:

module.exports = {
	// ...
	module: {
		rules: {
			test: /\.csss/,
			use: ['style-loader''css-loader'],
		}
	}
}

我們把style-loader加到了css-loader前面,這是因?yàn)?strong>在Webpack打包時(shí)是按照數(shù)組從后往前的順序?qū)①Y源交給 loader 處理的,因此要把最后生效的放在前面。

loader options
loader作為預(yù)處理器通常會給開發(fā)者提供一些配置項(xiàng),在引入loader 的時(shí)候可以通過options將它們傳人。
下面是一些場景下loader的相關(guān)配置

exclude與 include
excludeinclude是用來排除或包含指定目錄下的模塊,可接收正則表達(dá)式或者字符串(文件絕對路徑),以及由它們組成的數(shù)組。如下例:

rules: {
	test: /\.csss/,
	use: ['style-loader','css-loader'],
	exclude: /node_modules/,
}

上面配置的含義是node_modules 中的模塊不會執(zhí)行這條規(guī)則。該配置項(xiàng)通常是必加的,否則可能拖慢體的打包速度。

include的例子如下:

rules: {
	test: /\.csss/,
	use: ['style-loader','css-loader'],
	include: /src/,
}

include代表該規(guī)則只對正則匹配到的模塊生效。
exclude和include 同時(shí)存在時(shí),exclude的優(yōu)先級更高。
由于exclude優(yōu)先級更高,我們可以對include中的子目錄進(jìn)行排除。請看下面的例子:

rules: {
	test: /\.csss/,
	use: ['style-loader','css-loader'],
	exclude:/src\/lib/,
	include: /src/,
}

通過include,我們將該規(guī)則配置為僅對 src 目錄生效,但是仍然可以通過exclude排除其中的src/lib目錄。

resource與issuer
resourceissuer可用于更加精確地確定模塊規(guī)則的作用范圍。就比如下面的例子:

// index.js
import ./style.css';

在Webpack 中,一般認(rèn)為被加載模塊是 resource,而加載者是 issuer。如上面的例子中,resource為/path/of/app/style.css,issuer 是/path/of/app/index.js。

如果想要對 issuer 加載者也增加條件限制,則要額外寫一些配置。比如,如果我們只讓/src/pages目錄下的JS可以引用CSS,應(yīng)該如何設(shè)置呢?可以這樣:

issuer: {
	test: /\.js$/,
	include: /src/pages/,
}

可以看到,我們添加了issuer 配置對象,其形式與之前對resource條件的配置并無太大差異。

enforce
enforce用來指定一個(gè)loader的種類,只接收“pre”或“post”兩種字符電類型的值。
請看下面的例子:

rules:[
	{
		test: /\.js$/,
		enforce: 'pre',
		use:'eslint-loader',
	}
]

可以看到,在配置中添加了一個(gè)eslint-loader來對源碼進(jìn)行質(zhì)量檢測,其enforce的值為“pre”,代表它將在所有正常 loader之前執(zhí)行,這樣可以保證其檢測的代碼是被其他loader 更改過的。
類似的,如果某一個(gè)loader 是需要在所有 loader 之后執(zhí)行的也可以指定其enforce為"post"

事實(shí)上,我們也可以不使用enforce而只要保證loader順序是正確的即可
配置enforce 主要的目的是使模塊規(guī)則更加清晰,可讀性更強(qiáng),尤其是在實(shí)際工程中,置文件可能達(dá)到上百行的情況,難以保證各個(gè)loader 都按照預(yù)想的方式工作,使用enforce可以強(qiáng)制指定 loader的作用順序文章來源地址http://www.zghlxwxcb.cn/news/detail-796602.html

到了這里,關(guān)于【W(wǎng)ebpack】預(yù)處理器 - loader配置介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C語言中程序的編譯(預(yù)處理操作)+鏈接詳解(詳細(xì)介紹程序預(yù)編譯過程)

    C語言中程序的編譯(預(yù)處理操作)+鏈接詳解(詳細(xì)介紹程序預(yù)編譯過程)

    今天我們來學(xué)習(xí)C語言中程序的編譯和鏈接是如何進(jìn)行的。 在ANSI C的任何一種實(shí)現(xiàn)中,存在兩個(gè)不同的環(huán)境。 第1種是翻譯環(huán)境,在這個(gè)環(huán)境中源代碼被轉(zhuǎn)換為可執(zhí)行的機(jī)器指令。 第2種是執(zhí)行環(huán)境,它用于實(shí)際執(zhí)行代碼。 本文主要是介紹預(yù)編譯階段的相關(guān)知識。 1.組成一個(gè)程

    2023年04月09日
    瀏覽(33)
  • 【ARM 嵌入式 編譯系列 2.1 -- GCC 預(yù)處理命令 #error 和 #warning 詳細(xì)介紹 】

    在C語言中, #error 和 #warning 預(yù)處理指令可以用于在編譯時(shí)生成錯誤或警告信息,通常用于調(diào)試或當(dāng)代碼中某些條件未滿足時(shí)提醒開發(fā)者。當(dāng)這些指令被編譯器處理時(shí),會自動包含出現(xiàn)這些指令的文件名和行號,所以你可以清楚地看到問題出現(xiàn)的位置。 #error 當(dāng)編譯器遇到 #e

    2024年01月22日
    瀏覽(65)
  • 在vite+vue3項(xiàng)目中配置使用css預(yù)處理器(less/sass)以及路徑別名

    在vite+vue3項(xiàng)目中配置使用css預(yù)處理器(less/sass)以及路徑別名

    vite已經(jīng)將這些預(yù)處理器的loader內(nèi)置了,我們不用再像在webpack項(xiàng)目中那樣,需要下載和配置一堆相關(guān)的loader,我們只需要下載less,sass依賴,就能直接在項(xiàng)目中使用啦 使用npm或者yarn來安裝以下依賴: Less預(yù)處理器: npm install -D less Sass預(yù)處理器: npm install -D sass 如圖,下載之后

    2024年02月11日
    瀏覽(42)
  • 【C語言】程序環(huán)境和預(yù)處理|預(yù)處理詳解|定義宏(下)

    【C語言】程序環(huán)境和預(yù)處理|預(yù)處理詳解|定義宏(下)

    主頁:114514的代碼大冒 qq:2188956112(歡迎小伙伴呀hi?(。???。)??) Gitee:莊嘉豪 (zhuang-jiahaoxxx) - Gitee.com 文章目錄 目錄 文章目錄 前言 2.5帶副作用的宏參數(shù) 2.6宏和函數(shù)的對比 3#undef ?編輯 4 命令行定義 5 條件編譯 6 文件包含 總結(jié) 咱們書接上回 2.5帶副作用的宏參數(shù) 先來

    2024年01月17日
    瀏覽(32)
  • 數(shù)據(jù)采集與預(yù)處理01: 項(xiàng)目1 數(shù)據(jù)采集與預(yù)處理準(zhǔn)備

    數(shù)據(jù)采集與預(yù)處理01: 項(xiàng)目1 數(shù)據(jù)采集與預(yù)處理準(zhǔn)備

    數(shù)據(jù)采集:足夠的數(shù)據(jù)量是企業(yè)大數(shù)據(jù)戰(zhàn)略建設(shè)的基礎(chǔ),因此數(shù)據(jù)采集成為大數(shù)據(jù)分析的前站。數(shù)據(jù)采集是大數(shù)據(jù)價(jià)值挖掘中重要的一環(huán),其后的分析挖掘都建立在數(shù)據(jù)采集的基礎(chǔ)上。大數(shù)據(jù)技術(shù)的意義確實(shí)不在于掌握規(guī)模龐大的數(shù)據(jù)信息,而在于對這些數(shù)據(jù)進(jìn)行智能處理,

    2024年01月25日
    瀏覽(27)
  • 數(shù)據(jù)預(yù)處理matlab matlab數(shù)據(jù)的獲取、預(yù)處理、統(tǒng)計(jì)、可視化、降維

    1.1 從Excel中獲取 使用readtable() 例1: 使用 spreadsheetImportOptions(Name,Value) 初步確定導(dǎo)入信息, 再用 opts.Name=Value 的格式添加。 例2: 先初始化 spreadsheetImportOptions 對象, 再用 opts.Name=Value 的格式逐個(gè)添加。 例3: 將導(dǎo)入信息存到變量里, 再使用 spreadsheetImportOptions(Name,Value)

    2024年02月15日
    瀏覽(55)
  • C語言——程序環(huán)境和預(yù)處理(再也不用擔(dān)心會忘記預(yù)處理的知識)

    C語言——程序環(huán)境和預(yù)處理(再也不用擔(dān)心會忘記預(yù)處理的知識)

    先簡單了解一下程序環(huán)境,然后詳細(xì)總結(jié)翻譯環(huán)境里的編譯和鏈接,然后在總結(jié)編譯預(yù)處理。 在 ANSI C 的任何一種實(shí)現(xiàn)中,存在兩個(gè)不同的環(huán)境 翻譯環(huán)境:這個(gè)環(huán)境中源代碼被轉(zhuǎn)換為可執(zhí)行的機(jī)器指令。 執(zhí)行環(huán)境:執(zhí)行二進(jìn)制代碼。 計(jì)算機(jī)如何執(zhí)行二進(jìn)制指令? 我們寫的C語

    2024年02月09日
    瀏覽(36)
  • 圖像預(yù)處理算法————灰度化處理

    圖像預(yù)處理算法————灰度化處理

    圖像預(yù)處理算法適合在FPGA上完成,原理簡單且需要快速處理,通常有灰度化、中值、均值濾波等,以及顏色空間轉(zhuǎn)換算法。 灰度圖像是一種特殊的彩色圖像(R=G=B的彩色圖像) 只有一種顏色分量,單通道的0-255 方法:一般有分量法、最大值法、平均值法、加權(quán)平均法四種方

    2024年01月17日
    瀏覽(24)
  • 昇騰CANN DVPP硬件加速訓(xùn)練數(shù)據(jù)預(yù)處理,友好解決Host CPU預(yù)處理瓶

    本文分享自華為云社區(qū)《昇騰CANN 7.0 黑科技:DVPP硬件加速訓(xùn)練數(shù)據(jù)預(yù)處理,友好解決Host CPU預(yù)處理瓶頸》,作者: 昇騰CANN 。 隨著人工智能的快速發(fā)展,越來越多的應(yīng)用場景需要使用機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型。AI網(wǎng)絡(luò)模型的訓(xùn)練一般分成兩個(gè)關(guān)鍵部分,一個(gè)是訓(xùn)練數(shù)據(jù)預(yù)處理

    2024年02月05日
    瀏覽(29)
  • 大數(shù)據(jù)采集技術(shù)與預(yù)處理學(xué)習(xí)一:大數(shù)據(jù)概念、數(shù)據(jù)預(yù)處理、網(wǎng)絡(luò)數(shù)據(jù)采集

    大數(shù)據(jù)采集技術(shù)與預(yù)處理學(xué)習(xí)一:大數(shù)據(jù)概念、數(shù)據(jù)預(yù)處理、網(wǎng)絡(luò)數(shù)據(jù)采集

    目錄 大數(shù)據(jù)概念: 1.數(shù)據(jù)采集過程中會采集哪些類型的數(shù)據(jù)? 2.非結(jié)構(gòu)化數(shù)據(jù)采集的特點(diǎn)是什么? 3.請闡述傳統(tǒng)的數(shù)據(jù)采集與大數(shù)據(jù)采集的區(qū)別? ???????????????4.大數(shù)據(jù)采集的數(shù)據(jù)源有哪些?針對不同的數(shù)據(jù)源,我們可以采用哪些不同的方法和工具? 數(shù)據(jù)

    2024年01月25日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包