欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue各種loader的基本配置與使用示例教程

 更新時(shí)間:2023年01月07日 11:34:33   作者:堅(jiān)毅的小解同志  
這篇文章主要介紹了Vue?各種loader的基本配置與使用,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

webpack中的loader  

loader概述

在實(shí)際開(kāi)發(fā)過(guò)程中,webpack默認(rèn)只能打包處理以js后綴名結(jié)尾的模塊,其他非.js后綴名結(jié)尾模塊,webpack默認(rèn)處理不了,需要調(diào)用loader加載器才可以正常打包,否則會(huì)報(bào)錯(cuò)!

loader可以協(xié)助webpack打包處理特定的文件模塊。

  • css-loader可以打包處理.css相關(guān)的文件
  • less-loader可以打包處理.less相關(guān)的文件
  • babel-loader可以打包處理webpack無(wú)法處理的高級(jí)js語(yǔ)法

流程圖

接下來(lái)我們需要移除無(wú)序列表中的行頭前綴。

在src文件夾中創(chuàng)建css文件夾,再?gòu)腸ss文件夾中創(chuàng)建index.css文件,并寫(xiě)好樣式代碼。

li{
    list-style: none;
}

任何相關(guān)文件,我們都采取模塊導(dǎo)入的方式,在index.js中導(dǎo)入css模塊

import './css/index.css'

我們保存后,發(fā)現(xiàn)會(huì)報(bào)錯(cuò),是因?yàn)閘oader沒(méi)有配置。

打包處理css文件

  1. 運(yùn)行npm i style-loader@3.0.0 css-loader@5.2.6 -D命令,安裝處理css文件的loader
  2. 在webpack.config.js的module->rules數(shù)組中,添加loader規(guī)則如下

其中,test表示匹配的文件類型,use表示對(duì)應(yīng)要調(diào)用的loader。

注意

  • use數(shù)組中指定的loader順序是固定的。
  • 多個(gè)loader的調(diào)用順序是從后往前調(diào)用。在webpack.config.js文件中寫(xiě)入如下代碼
module: {
    rules: [ 
        {test: /\.css$/, use:['style-loader', 'css-loader'] }
        ] 
    }

重新運(yùn)行服務(wù)器,發(fā)現(xiàn)css有了效果。

打包處理less文件

  1. 運(yùn)行npm i less-loader@10.0.1 less@4.1.1 -D命令
  2. 在webpack.config.js的module->rules數(shù)組中,添加loader規(guī)則如下:

寫(xiě)一個(gè)less樣式文件,文件與css同級(jí)。

html,body,ul{
    margin: 0;
    padding: 0;
    li {
        line-height: 30px;
        padding-left: 20px;
        font-size: 12px;
    }
}

樣式文件寫(xiě)完后,然后進(jìn)行l(wèi)ess模塊導(dǎo)入,保存后會(huì)報(bào)相同的錯(cuò)誤。

使用npm i less-loader@10.0.1 less@4.1.1 -D 下載相關(guān)依賴。

再?gòu)膚ebpack.config.js中的css loader下面,進(jìn)行一個(gè)less Loader的設(shè)置,就可以成功應(yīng)用less樣式文件了。

{ test: /\.less$/, use: ['style-loader', 'css-loader', 'less-loader'] }

打包處理圖片

base64

使用base64字符串來(lái)加載圖片,可以減少不必要的請(qǐng)求,瀏覽器在獲取標(biāo)簽的同時(shí)可以一并獲取到圖片。

打包步驟

  1. 運(yùn)行npm i url-loader@4.1.1 file-loader@6.2.0 -D命令
  2. 在webpack.config.js的module->rules數(shù)組中,添加loader規(guī)則如下

其中?之后的是loader的參數(shù)項(xiàng):

  • limit用來(lái)指定圖片的大小,單位是字節(jié)(byte)
  • 只有<=limit大小的圖片,才會(huì)被轉(zhuǎn)為base64格式的圖片

操作練習(xí)

目標(biāo):添加一個(gè)img標(biāo)簽通過(guò)動(dòng)態(tài)方法給它添加src值。

首先在src目錄下建立一個(gè)images文件夾,里面放置一張圖片。

寫(xiě)好img標(biāo)簽

<img src="" alt="" class="box">

在index.js中進(jìn)行模塊導(dǎo)入與應(yīng)用,導(dǎo)入的logo就是圖片的base64

//導(dǎo)入圖片文件
import logo from './images/logo.jpg';
//給img標(biāo)簽的src屬性賦值
$('.box').attr('src', logo)

然后進(jìn)行l(wèi)oader的安裝。

npm i url-loader@4.1.1 file-loader@6.2.0 -D

安裝完成后進(jìn)行webpack.config.js的配置

//處理圖片文件的loader
{test:/\.jpg|png|gif$/,use:'url-loader'}

現(xiàn)在 在進(jìn)行打包運(yùn)行 圖片就能夠成功顯示了。

打包處理js高級(jí)語(yǔ)法

特別高級(jí)的js語(yǔ)法webpack本身也無(wú)法處理,得需要相應(yīng)的loader。

在index.js中書(shū)寫(xiě)js高級(jí)語(yǔ)法

//高級(jí) js

//定義裝飾器函數(shù)
function info(target) {
    target.info = 'Person info';
}

//添加裝飾器
@info
//定義一個(gè)類
class Person { };

console.log(Person.info);

安裝loader依賴包并進(jìn)行配置

npm i babel-loader@8.2.2 @babel/core@7.14.6 @babel/plugin-proposal-decorators@7.14.5 -D
//處理高級(jí)js的loader,exclude用來(lái)忽略不用轉(zhuǎn)換的第三方包
{ test: /\.js$/, use: 'babel-loader', exclude: /node_modules/ } 

新建一個(gè)babel.config.js文件,并進(jìn)行配置。

module.exports = {
     //轉(zhuǎn)換高級(jí)語(yǔ)法 
     plugins: [['@babel/plugin-proposal-decorators', { legacy: true }]]
    }

接下來(lái)就可以進(jìn)行運(yùn)行打包,瀏覽器控制臺(tái)就能正確顯示。

優(yōu)化打包以及圖片和js文件存放路徑

優(yōu)化打包

在scripts中設(shè)置多個(gè)打包方式

其中前兩個(gè)打包模式mode是webpack.config.js中設(shè)置的development模式

第一個(gè)打包模式是在內(nèi)存中顯示的便于開(kāi)發(fā)瀏覽。

第二個(gè)是打包到物理層面上的打包。

第三個(gè)也是打包到物理層面上的打包,只不過(guò)使用的是生成模式會(huì)對(duì)代碼進(jìn)行壓縮,直接在這里設(shè)置mode,優(yōu)先級(jí)大于webpack.config.js中的設(shè)置。

圖片存放路徑

在前面的圖片loader中 除了limit可以設(shè)置處理圖片的最大值,(轉(zhuǎn)化成base64的圖片不會(huì)被進(jìn)行打包,)我們還可以設(shè)置圖片的存放路徑,用&鏈接通過(guò)outputPath進(jìn)行設(shè)置。

{ test: /\.jpg|png|gif$/, use: 'url-loader?limit=4000&outputPath=images' }, 

js文件存放路徑

只需要設(shè)置輸出文件名前,加一個(gè)文件夾,輸出的時(shí)候就會(huì)帶著這個(gè)文件夾。

output: {
    //指定存放目錄 
    path: path.join(__dirname, 'dist1'), 
    filename: 'js/new.js' 
    },

自動(dòng)清理dist目錄下的舊文件

為了在每次打包發(fā)布時(shí)自動(dòng)清理掉dist目錄中的舊文件,可以安裝并配置clean-webpack-plugin插件。

安裝插件

npm i clean-webpack-plugin -D

導(dǎo)入模塊

const {CleanWebpackPlugin } = require('clean-webpack-plugin');

將實(shí)例化對(duì)象寫(xiě)入之前的plugins數(shù)組中

plugins: [HtmlPlugin, new CleanWebpackPlugin()],

這樣 在我們每次運(yùn)行打包輸出文件的時(shí)候,都會(huì)自動(dòng)清除原來(lái)文件,重新生成。

在新版本中,我們可以直接在output輸出文件夾下面加一個(gè)clean:true的屬性,效果是一樣的。

文件目錄設(shè)置

當(dāng)我們引入文件時(shí),如果層級(jí)過(guò)深的化,就會(huì)看到…/…/…/…/…/main.js,非常的不便于閱讀與理解,除了從內(nèi)到外尋找文件,我們還可以直接從外層尋找文件,可以直接設(shè)置指定的文件名為固定文件。

我們需要在webpack.config.js中進(jìn)行設(shè)置

resolve: {
        alias: { 
            //@就代表src文件夾 
            '@': path.join(__dirname, 'src') 
        } 
}

創(chuàng)建info.js 和msg.js文件進(jìn)行測(cè)試。

效果是一樣的 實(shí)際上就是絕對(duì)路徑,設(shè)置了哥文件夾變量。

Source Map

什么是Source Map

Source Map就是一個(gè)信息文件,里面儲(chǔ)存著位置信息。也就是說(shuō),Source Map文件中存儲(chǔ)著壓縮混淆后的代碼,所對(duì)應(yīng)的轉(zhuǎn)換前的位置。
有了它,出錯(cuò)的時(shí)候,除錯(cuò)工具將直接顯示原始代碼,而不是轉(zhuǎn)換后的代碼,能夠極大的方便后期的調(diào)試。

默認(rèn)Source Map的問(wèn)題

開(kāi)發(fā)環(huán)境下默認(rèn)生成的Source Map,記錄的是生成后的代碼的位置,會(huì)導(dǎo)致運(yùn)行時(shí)報(bào)錯(cuò)的行數(shù)與源代碼行數(shù)的不一致。

解決默認(rèn)Source Map的問(wèn)題

開(kāi)發(fā)環(huán)境下,推薦在webpack.config.js中添加如下的配置,即可保證運(yùn)行時(shí)報(bào)錯(cuò)的行數(shù)與源代碼行數(shù)一致。

//開(kāi)發(fā)測(cè)試階段,建議大家把devtool的值設(shè)置為eval-source-map,便于調(diào)試。 
devtool: 'eval-source-map', //運(yùn)行時(shí)報(bào)錯(cuò)的行數(shù)與源代碼一致 //
devtool: 'source-map', //還會(huì)在本地生產(chǎn)一個(gè)map記錄文件

在生產(chǎn)環(huán)境下,如果省略了devtool選項(xiàng),則最終生成的文件中不包含Source Map,這能夠防止原始代碼通過(guò)Source Map的形式暴露給別有所圖之人。

只定位行數(shù)不暴露源碼

在生產(chǎn)環(huán)境下,如果只想定位報(bào)錯(cuò)的具體行數(shù),且不想暴露源碼,此時(shí)可以將devtool的值設(shè)置為nosources-source-map。

//在實(shí)際發(fā)布的時(shí)候,建議大家把devtool的值設(shè)置為nosources-source-map,或直接關(guān)閉devtool。
devtool:'nosources-source-map' 只顯示行數(shù)不暴露源碼

Source Map的最佳實(shí)踐

1.開(kāi)發(fā)環(huán)境下

  • 建議把devtool的值設(shè)置為eval-source-map
  • 好處:可以精準(zhǔn)定位到具體的錯(cuò)誤行

2.生產(chǎn)環(huán)境下

  • 建議關(guān)閉Source Map或?qū)evtool的值設(shè)置為nosources-source-map
  • 好處:放置源碼泄露,提高網(wǎng)站的安全性。

到此這篇關(guān)于Vue 各種loader的基本配置與使用示例教程的文章就介紹到這了,更多相關(guān)loader的基本配置與使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3-組合式api-provide/inject詳解

    vue3-組合式api-provide/inject詳解

    provide/inject 適用于跨級(jí)通信,在孫組件中通過(guò)依賴注入的方式能獲取到父組件中改變的這個(gè)值,下面通過(guò)實(shí)例代碼介紹vue3-組合式api-provide/inject的相關(guān)知識(shí),需要的朋友可以參考下
    2022-11-11
  • vue.js如何將echarts封裝為組件一鍵使用詳解

    vue.js如何將echarts封裝為組件一鍵使用詳解

    Echarts 、 Remodal和Pikaday是我們?cè)陂_(kāi)發(fā)后臺(tái)管理類網(wǎng)站時(shí)常用的三個(gè)第三方組件,下面這篇文章主要給大家介紹了關(guān)于vue.js如何將echarts封裝為組件一鍵使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-10-10
  • 安裝nvm?node版本管理器的操作方法(vue2.x遷移vue3.x)

    安裝nvm?node版本管理器的操作方法(vue2.x遷移vue3.x)

    這篇文章主要介紹了安裝nvm?node版本管理器(vue2.x遷移vue3.x)的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • 在Vue2中注冊(cè)全局組件的兩種方法詳解

    在Vue2中注冊(cè)全局組件的兩種方法詳解

    這篇文章主要介紹了在Vue2中注冊(cè)全局組件的兩種方法,非常的細(xì)致,需要的朋友可以參考下
    2022-07-07
  • Vue?非常實(shí)用的自定義指令分享

    Vue?非常實(shí)用的自定義指令分享

    這篇文章主要介紹了Vue?非常實(shí)用的自定義指令分享,Vue自定義指令有全局注冊(cè)和局部注冊(cè)兩種方式,在?Vue,除了核心功能默認(rèn)內(nèi)置的指令?(?v-model?和?v-show?),Vue?也允許注冊(cè)自定義指令,下文小編給大家分享那些常用到的Vue自定義指令
    2022-02-02
  • vue實(shí)現(xiàn)GitHub的第三方授權(quán)方法示例

    vue實(shí)現(xiàn)GitHub的第三方授權(quán)方法示例

    本文主要介紹了vue實(shí)現(xiàn)GitHub的第三方授權(quán),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Vue3中Suspense異步加載組件的問(wèn)題

    Vue3中Suspense異步加載組件的問(wèn)題

    在我們?nèi)粘i_(kāi)發(fā)中,有些組件里面加載非常慢,導(dǎo)致我們路由跳轉(zhuǎn)的時(shí)候回出現(xiàn)卡頓情況,這篇文章主要介紹了Vue3:?Suspense異步加載組件,需要的朋友可以參考下
    2023-12-12
  • Vue Camera組件功能及常用使用方法

    Vue Camera組件功能及常用使用方法

    Vue Camera組件是一個(gè)用于在Web應(yīng)用中使用攝像頭的Vue插件,它提供了一些常見(jiàn)的功能和方法來(lái)控制攝像頭和捕獲圖像或視頻數(shù)據(jù),本文給大家介紹Vue Camera組件的常見(jiàn)功能和使用方法,感興趣的朋友一起看看吧
    2023-11-11
  • vue實(shí)現(xiàn)web前端登錄頁(yè)數(shù)字驗(yàn)證碼

    vue實(shí)現(xiàn)web前端登錄頁(yè)數(shù)字驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)web前端登錄頁(yè)數(shù)字驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • vue3點(diǎn)擊不同的菜單頁(yè)切換局部頁(yè)面實(shí)現(xiàn)方法

    vue3點(diǎn)擊不同的菜單頁(yè)切換局部頁(yè)面實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于vue3點(diǎn)擊不同的菜單頁(yè)切換局部頁(yè)面實(shí)現(xiàn)的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue3具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-08-08

最新評(píng)論