Vue3.js中使用svg:vite-plugin-svg-icons

本文详细介绍了如何在Vue3项目中利用Vite和vite-plugin-svg-icons插件来管理和使用SVG图标。首先,安装必要的依赖,然后在vite.config.js中配置SVG图标插件。接着,创建一个SVGIcon组件,并在main.js中注册。最后,通过组件的方式在应用中方便地使用SVG图标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文使用 vue3.js提供的 option-api方式实现

环境

$ node -v
v16.14.0

$ pnpm -v
7.4.1

安装依赖

pnpm i -D vite-plugin-svg-icons fast-glob

package.json

{
   "dependencies": {
     "vue": "^3.2.37"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^3.0.0",
    "fast-glob": "^3.2.11",
    "vite": "^3.0.0",
    "vite-plugin-svg-icons": "^2.0.1"
  }
}

配置文件 vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'

export default defineConfig({
  plugins: [
    vue(),

    // 使用svg-icon
    createSvgIconsPlugin({
      // 指定需要缓存的图标文件夹
      iconDirs: [path.resolve(process.cwd(), 'src/assets/svg/icons')],
      // 指定symbolId格式
      symbolId: 'icon-[name]',
    }),
  ],
  
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src')
    }
  }
})

src/assets/svg/SvgIcon.vue

<template>
  <svg
    class="svg-icon"
    aria-hidden="true"
  >
    <use
      :xlink:href="symbolId"
      rel="external nofollow"
    />
  </svg>
</template>

<script>

// svg 组件
export default {
  name: 'svg-icon',

  props: {
    name: {
      type: String,
      required: true,
    },
  },

  computed: {
    symbolId() {
      return `#icon-${this.name}`
    },
  },
}
</script>

<style lang="less">
.svg-icon {
  width: 1em;
  height: 1em;
  vertical-align: -0.15em;
  fill: currentColor;
  overflow: hidden;
}
</style>

src/main.js

import { createApp } from 'vue'

// 引入注册脚本
import 'virtual:svg-icons-register'
import SvgIcon from './assets/svg/SvgIcon.vue'

const app = createApp(App)
app.component('svg-icon', SvgIcon)
app.mount('#app')

使用

<svg-icon name="person" />

目录结构

src/assets/svg
    SvgIcon.vue
	/icons

将svg图标文件放在icons目录下即可

参考
Vue3中级指南之如何在vite中使用svg图标详解

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值