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

相关文章
|
程序员 数据库 开发者
值得收藏!如何快速画出一幅漂亮的架构图
这篇文章总结了常用的架构图类型,可以借鉴笔者提供的模板,快速地产出符合业务需要的架构图。
162468 95
|
存储 网络协议 Linux
如何安装OpenStack?
【8月更文挑战第21天】
1820 1
|
10月前
|
人工智能 运维 数据可视化
1分钟集成DeepSeek满血版!搭建智能运维助手
1分钟集成DeepSeek满血版!搭建智能运维助手
|
监控 安全 网络性能优化
|
机器学习/深度学习 算法 开发工具
通义千问2(Qwen2)大语言模型在PAI-QuickStart的微调、评测与部署实践
阿里云的人工智能平台PAI,作为一站式的机器学习和深度学习平台,对Qwen2模型系列提供了全面的技术支持。无论是开发者还是企业客户,都可以通过PAI-QuickStart轻松实现Qwen2系列模型的微调、评测和快速部署。
|
域名解析 编解码 负载均衡
【域名解析DNS专栏】域名解析中的EDNS扩展:提升DNS协议灵活性
【5月更文挑战第27天】EDNS(Extension Mechanisms for DNS)是为了解决传统DNS协议在复杂网络环境下的灵活性和扩展性问题而诞生的技术。它允许在DNS请求和响应中添加额外选项,提高查询效率,支持更大数据范围,增强安全性,并实现负载均衡和故障转移。通过在DNS消息中包含EDNS部分,客户端和服务器能交换更多信息,实现更复杂的逻辑。EDNS的使用示例代码展示了如何在Python中创建和处理EDNS选项。随着技术进步,EDNS将在域名解析领域扮演更重要角色。
668 1
|
消息中间件 Kafka Linux
Kafka【付诸实践 03】Offset Explorer Kafka 的终极 UI 工具安装+简单上手+关键特性测试(一篇学会使用 Offset Explorer)
【2月更文挑战第21天】Kafka【付诸实践 03】Offset Explorer Kafka 的终极 UI 工具安装+简单上手+关键特性测试(一篇学会使用 Offset Explorer)
2142 2
|
JavaScript 小程序 API
uniapp的实战总结大全
uniapp的实战总结大全
360 0