vue項(xiàng)目引入svg圖標(biāo)的完整步驟
1. 安裝svg依賴(lài)
在vue中首先需要安裝可以加載svg的依賴(lài)。
npm安裝:npm install svg-sprite-loader --save-dev
2. 創(chuàng)建svg文件夾存放svg圖標(biāo)
創(chuàng)建icons文件夾,在icons文件夾下創(chuàng)建svg文件夾存放本地svg圖標(biāo)。

3. vue.config.js 中配置svg圖片

vue.config.js代碼:
const path = require('path')
module.exports = {
chainWebpack:config=>{
// svg圖標(biāo)加載
config.module
.rule('svg')
.exclude.add(path.join(__dirname, 'src/assets/icons/svg'))
.end()
config.module
.rule('icons')// 定義一個(gè)名叫 icons 的規(guī)則
.test(/\.svg$/)// 設(shè)置 icons 的匹配正則
.include.add(path.join(__dirname,'src/assets/icons/svg'))// 設(shè)置當(dāng)前規(guī)則的作用目錄,只在當(dāng)前目錄下才執(zhí)行當(dāng)前規(guī)則
.end()
.use('svg-sprite')// 指定一個(gè)名叫 svg-sprite 的 loader 配置
.loader('svg-sprite-loader')// 該配置使用 svg-sprite-loader 作為處理 loader
.options({// 該 svg-sprite-loader 的配置
symbolId:'icon-[name]'
})
.end()
}
}
include.add(路徑)–路徑不正確會(huì)報(bào)以下錯(cuò)誤:

4. 創(chuàng)建index.js 導(dǎo)入所有svg圖標(biāo)
icons文件夾創(chuàng)建index.js 自動(dòng)導(dǎo)入所有svg圖標(biāo)。

icons/index.js代碼:
const req = require.context('@/assets/icons/svg',false,/\.svg$/)
const requireAll = requireContext =>{
// requireContext.keys()數(shù)據(jù):['./404.svg', './agency.svg', './det.svg', './user.svg']
requireContext.keys().map(requireContext)
}
requireAll(req)
執(zhí)行 requireContext.keys().map(requireContext)得到返回的數(shù)據(jù):

5. main.js中引入icons/index.js

6. 創(chuàng)建SvgIcon公用組件

SvgIcon/index.vue代碼:
<template>
<i v-if="iconFileName.indexOf('el-icon-') === 0" :class="iconFileName" />
<svg v-else class="svg-icon" aria-hidden="true" v-on="$listeners">
<use :xlink:href="`#icon-${iconFileName}`" rel="external nofollow" />
</svg>
</template>
<script>
export default {
name: 'SvgIcon',
props: {
iconFileName: {
type: String,
required: true
}
}
}
</script>
<style scoped>
.svg-icon {
width: 1em;
height: 1em;
overflow: hidden;
vertical-align: -0.15em;
fill: currentColor;
}
</style>
全局注冊(cè)SvgIcon組件:

使用SvgIcon組件:

使用require.context實(shí)現(xiàn)前端工程自動(dòng)化
總結(jié)
到此這篇關(guān)于vue項(xiàng)目引入svg圖標(biāo)的文章就介紹到這了,更多相關(guān)vue項(xiàng)目引入svg圖標(biāo)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue uniapp 防止按鈕多次點(diǎn)擊的三種實(shí)現(xiàn)方式
最近的項(xiàng)目完成后,在性能優(yōu)化階段需要做按鈕的防止重復(fù)點(diǎn)擊功能,本文主要介紹了vue uniapp 防止按鈕多次點(diǎn)擊的三種實(shí)現(xiàn)方式,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
Vue組件內(nèi)部實(shí)現(xiàn)一個(gè)雙向數(shù)據(jù)綁定的實(shí)例代碼
這篇文章主要介紹了Vue組件內(nèi)部實(shí)現(xiàn)一個(gè)雙向數(shù)據(jù)綁定的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
Vuex中實(shí)現(xiàn)數(shù)據(jù)狀態(tài)查詢(xún)與更改
今天小編就為大家分享一篇Vuex中實(shí)現(xiàn)數(shù)據(jù)狀態(tài)查詢(xún)與更改,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
element-plus一個(gè)vue3.xUI框架(element-ui的3.x 版初體驗(yàn))
這篇文章主要介紹了element-plus一個(gè)vue3.xUI框架(element-ui的3.x 版初體驗(yàn)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Vue3實(shí)現(xiàn)canvas畫(huà)布組件自定義畫(huà)板實(shí)例代碼
Vue?Canvas是一個(gè)基于Vue.js的輕量級(jí)畫(huà)板組件,旨在提供一個(gè)簡(jiǎn)易的畫(huà)布功能,用戶(hù)可以在網(wǎng)頁(yè)上進(jìn)行自由繪圖,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-09-09
vue3+vite項(xiàng)目中顯示SVG圖片的實(shí)現(xiàn)
vite-plugin-svg-icons是一個(gè)Vite插件,其作用是將SVG圖標(biāo)文件轉(zhuǎn)換為Vue組件,本文主要介紹了vue3+vite項(xiàng)目中顯示SVG圖片的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
wepy--用vantUI 實(shí)現(xiàn)上彈列表并選擇相應(yīng)的值操作
這篇文章主要介紹了wepy--用vantUI 實(shí)現(xiàn)上彈列表并選擇相應(yīng)的值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11

