VUE3 加載自定義SVG文件的詳細(xì)步驟
網(wǎng)上代碼通篇一律,需要修改多處地方,特別是component下還要?jiǎng)?chuàng)建一個(gè)index.vue的組件,奇奇怪怪。
要在 Vue 項(xiàng)目中使用 svg-sprite-loader
來(lái)管理 SVG 圖標(biāo),你需要執(zhí)行以下幾個(gè)步驟:
npm install svg-sprite-loader -D
步驟 1: 配置 vue.config.js
確保你的 Vue 項(xiàng)目的根目錄中有一個(gè) vue.config.js
文件,用于自定義 Vue CLI 的內(nèi)部 webpack 配置。如果文件不存在,你可以創(chuàng)建一個(gè)。在這個(gè)文件中,添加以下配置:
const path = require('path'); module.exports = { chainWebpack: config => { // SVG 規(guī)則排除 icons 目錄 config.module.rule('svg') .exclude.add(path.resolve('src/assets/icons')) // 添加 icons 目錄的 SVG loader config.module.rule('icons') .test(/\.svg$/) .include.add(path.resolve('src/assets/icons')).end() .use('svg-sprite-loader') .loader('svg-sprite-loader') .options({ symbolId: 'icon-[name]' }) } };
這個(gè)配置告訴 webpack 對(duì)于 src/assets/icons
目錄中的 .svg
文件,使用 svg-sprite-loader
來(lái)處理它們。其他目錄中的 .svg
文件將使用項(xiàng)目中默認(rèn)的 SVG loader。
步驟 2: 添加 SVG 圖標(biāo)
將你的 SVG 圖標(biāo)放置在 src/assets/icons
目錄中。例如,你可以有一個(gè)名為 example.svg
的圖標(biāo)。
一個(gè)簡(jiǎn)單的 SVG 圖標(biāo)可能看起來(lái)像這樣:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/> </svg>
步驟 3: 全局引入 SVG 圖標(biāo)
在項(xiàng)目的入口文件(通常是main.js
或 main.ts
)中添加全局 SVG 導(dǎo)入。例如:
import { createApp } from 'vue'; import App from './App.vue'; // 導(dǎo)入 SVG 圖標(biāo) const req = require.context('./assets/icons', false, /\.svg$/); const requireAll = context => context.keys().map(context); requireAll(req); createApp(App).mount('#app');
步驟 4: 使用 SVG 圖標(biāo)
在你的組件中,你應(yīng)該能夠通過(guò) symbolId 引用 SVG 圖標(biāo),就像這樣:
<template> <svg class="icon" aria-hidden="true"> <use xlink:href="#icon-example" rel="external nofollow" ></use> </svg> </template>
其中 icon-example 是你的 SVG 文件名。
步驟 5: 重新編譯
現(xiàn)在,你可以在任何組件中使用這些 SVG 圖標(biāo)。圖標(biāo)的 ID 將基于文件名,例如 icon-example
對(duì)應(yīng)于 example.svg
文件。
請(qǐng)注意,這些步驟假設(shè)你的 Vue 項(xiàng)目是基于 Vue CLI 創(chuàng)建的。如果你的項(xiàng)目結(jié)構(gòu)有所不同,可能需要相應(yīng)地調(diào)整配置和路徑。
到此這篇關(guān)于VUE3 加載自定義SVG文件的詳細(xì)步驟的文章就介紹到這了,更多相關(guān)VUE3 加載自定義SVG文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于vue-router的使用及實(shí)現(xiàn)原理
這篇文章主要介紹了關(guān)于vue-router的使用及實(shí)現(xiàn)原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06vue實(shí)現(xiàn)的微信機(jī)器人聊天功能案例【附源碼下載】
這篇文章主要介紹了vue實(shí)現(xiàn)的微信機(jī)器人聊天功能,結(jié)合實(shí)例形式分析了基于vue.js的微信機(jī)器人聊天相關(guān)界面布局、ajax交互等操作技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下2019-02-02詳解vue-cli項(xiàng)目中的proxyTable跨域問(wèn)題小結(jié)
這篇文章主要介紹了詳解vue-cli項(xiàng)目中的proxyTable跨域問(wèn)題小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02解決vue創(chuàng)建項(xiàng)目使用vue-router和vuex報(bào)錯(cuò)Object(...)is not a&nb
這篇文章主要介紹了解決vue創(chuàng)建項(xiàng)目使用vue-router和vuex報(bào)錯(cuò)Object(...)is not a function問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02vue-cli3+typescript初體驗(yàn)小結(jié)
這篇文章主要介紹了vue-cli3+typescript初體驗(yàn)小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02Vue2.0 v-for filter列表過(guò)濾功能的實(shí)現(xiàn)
今天小編就為大家分享一篇Vue2.0 v-for filter列表過(guò)濾功能的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09VUE.CLI4.0配置多頁(yè)面入口的實(shí)現(xiàn)
這篇文章主要介紹了VUE.CLI4.0配置多頁(yè)面入口的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11vue-cli結(jié)合Element-ui基于cropper.js封裝vue實(shí)現(xiàn)圖片裁剪組件功能
這篇文章主要介紹了vue-cli結(jié)合Element-ui基于cropper.js封裝vue實(shí)現(xiàn)圖片裁剪組件功能,本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友可以參考下2018-03-03