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

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

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

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

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>
全局注冊SvgIcon組件:

使用SvgIcon組件:

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

