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

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

环境


$ 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目录下即可

相关文章
|
6月前
|
Linux
Linux:守护进程(进程组、会话和守护进程)
守护进程在 Linux 系统中扮演着重要角色,通过后台执行关键任务和服务,确保系统的稳定运行。理解进程组和会话的概念,是正确创建和管理守护进程的基础。使用现代的 `systemd` 或传统的 `init.d` 方法,可以有效地管理守护进程,提升系统的可靠性和可维护性。希望本文能帮助读者深入理解并掌握 Linux 守护进程的相关知识。
273 7
|
存储 网络协议 Linux
如何安装OpenStack?
【8月更文挑战第21天】
1474 1
|
7月前
|
人工智能 运维 数据可视化
1分钟集成DeepSeek满血版!搭建智能运维助手
1分钟集成DeepSeek满血版!搭建智能运维助手
|
机器学习/深度学习 算法 开发工具
通义千问2(Qwen2)大语言模型在PAI-QuickStart的微调、评测与部署实践
阿里云的人工智能平台PAI,作为一站式的机器学习和深度学习平台,对Qwen2模型系列提供了全面的技术支持。无论是开发者还是企业客户,都可以通过PAI-QuickStart轻松实现Qwen2系列模型的微调、评测和快速部署。
|
JavaScript
vue3引入vant完整步骤
vue3引入vant完整步骤
826 8
|
存储 缓存 NoSQL
Redis经典问题:BigKey问题
BigKey问题常困扰着Redis用户,其影响不容忽视。本文将深入探讨BigKey问题的本质及解决方案,帮助你优化Redis性能,提升系统稳定性。
754 2
|
JSON 数据格式
appium driver install uiautomator2 安装失败
appium driver install uiautomator2 安装失败
378 6
|
编解码 算法 自动驾驶
【计算机视觉】基于光流特征的目标跟踪算法LK光流法的讲解(图文解释 超详细)
【计算机视觉】基于光流特征的目标跟踪算法LK光流法的讲解(图文解释 超详细)
922 0
|
Java 应用服务中间件 API
SpringBoot部署线上jar或war到Tomcat服务器
SpringBoot部署线上jar或war到Tomcat服务器
1108 0
SpringBoot部署线上jar或war到Tomcat服务器