vue3引入SvgIcon

这里使用vite-plugin-svg-icons插件

yarn add vite-plugin-svg-icons -D
# or
npm i vite-plugin-svg-icons -D
# or
pnpm install vite-plugin-svg-icons -D

在vite.config.js处引入插件

复制代码
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'
export default defineConfig({
  css: {
  },
  plugins: [
...
    createSvgIconsPlugin({
      iconDirs: [path.resolve(process.cwd(), 'src/assets/svg')]
    })
...
  ],
})
复制代码

在main.js里开启注册

import 'virtual:svg-icons-register'

在components处新建svg组件SvgIcon.vue

复制代码
<template>
    <svg class="svgclass" aria-hidden="true">
        <use :xlink:href="symbolId" :fill="color" />
    </svg>
</template>

<script setup>
import { defineProps, computed } from 'vue'
const props = defineProps({
    prefix: {
        type: String,
        default: 'icon',
    },
    name: {
        type: String,
        required: true,
    },
    color: {
        type: String,
        default: '#333',
    },
})
const symbolId = computed(() => `#${props.prefix}-${props.name}`)
</script>
<style scoped lang='scss' >
.svgclass {
    width: 1em;
    height: 1em;
    overflow: hidden;
    vertical-align: top;
}
</style>
复制代码

在main.js里注册为全局插件

import 'virtual:svg-icons-register'
import SvgIcon from './components/SvgIcon.vue'
app.component('svg-icon', SvgIcon)

就可以在.vue里面使用了

<template>
    <div>
        <SvgIcon name="show"></SvgIcon>
    </div>
</template>

 

posted @   Pavetr  阅读(724)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示