vue3+vue-cli4中怎么使用svg
作者:自在如风听雨
时间:2024-04-16
浏览:0
一、安装svg-sprite-loadernpminstallsvg-sprite-loader--save-dev二、在src/components/svgIcon下新建组件index.vueimport{computed}from"@vue/reactivity";exportdefault{name:"baseSvgIcon",props:{iconClass:{type:String},className:{type:String},},setup(props){consticonName=com
一、安装 svg-sprite-loader
npm install svg-sprite-loader --save-dev
二、在src/components/svgIcon下新建组件index.vue
三、在assets在创建icons文件夹
imgs文件夹里含一个svg文件夹,放svg格式文件,以及一个index.js文件,该文件内容如下
// 获取当前目录所有为.svg的文件
const req = require.context('./svg', false, /\.svg$/)
// 解析获取的.svg文件的文件名称并返回
const requireAll = (requireContext) =>{
return requireContext.keys().map(requireContext)
}
requireAll(req)四、在src同级下创建vue.config.js进行配置
经评论区总结,如果是在非vue-cli4的项目中,在config.module.rules.delete("svg");报错的话,可以尝试使用config.module.rule("svg").exclude.add(resolve("src/assets/imgs")).end();替换该语句
const path = require('path')
function resolve(dir) {
return path.join(__dirname, '.', dir)
}
module.exports = {
chainWebpack: config => {
config.module.rules.delete("svg"); // 重点:删除默认配置中处理svg,
config.module
.rule('svg-sprite-loader')
.test(/\.svg$/)
.include
.add(resolve('src/assets/imgs')) // 处理svg目录
.end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
.options({
symbolId: 'icon-[name]'
})
},
};五、在main.js里引入,以及做一些小修改
此处注意,将组件注册放到main.js里。不然会报[Vue warn]: Failed to resolve component: svg-icon的问题,预测为父组件先创建完了而子组件还没创建进去,导致该问题的出现
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import '@/assets/icons'
const app = createApp(App)
import SvgIcon from '@/components/svgIcon'
app.component('svg-icon', SvgIcon)
app.use(store).use(router).mount('#app')六、在页面中使用
七、文件目录结构及其效果展示

作者最新文章
Nothing 海外重启社区共创计划:提前体验与评测规则详解
2026-09-08 17:06
PDF合并工具怎么选?多个PDF文件免费合并方法有哪些?
2026-09-02 09:06
360 手机N4(全网通)忘了手机密码怎么办?
2026-08-25 13:56
小米米家便携咖啡机开启众筹:45 秒冷热快速萃取、IP55 认证,559 元
2026-08-25 11:44
海信A10回归:可能是今年唯一的小屏手机,但你真能用惯墨水屏吗?
2026-08-25 09:36
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































