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

相关文章
|
程序员 数据库 开发者
值得收藏!如何快速画出一幅漂亮的架构图
这篇文章总结了常用的架构图类型,可以借鉴笔者提供的模板,快速地产出符合业务需要的架构图。
163009 95
vue3+vite项目中使用svg图标
vue3+vite项目中使用svg图标
2516 1
|
存储 网络协议 Linux
如何安装OpenStack?
【8月更文挑战第21天】
2387 1
|
前端开发 JavaScript 关系型数据库
如何开发一个ERP系统:从零开始构建
【9月更文第4天】企业资源计划(ERP)系统是现代企业管理不可或缺的一部分,它集成了公司的关键业务流程,并提供了统一的数据管理平台。本文将探讨如何从零开始构建一个简单的ERP系统,并提供一些基本的代码示例来演示关键组件的开发过程。
2587 3
|
JavaScript
Vue3 + Vite + TS项目引入iconfont图标(Svg方式)
前言 每一个项目都避免不了使用各种各样的图标,如果我们使用了 UI 组件库,比如说 ELement 等,那么组件库有一些封装好的图标供我们使用。但是项目是多变的和复杂的,组件库提供的图标很多时候不能满足需求,这个时候就需要我们自己引入想要的图标了。 今天介绍的便是如何将 iconfont 阿里图标库的图标引入到我们的 Vue3 项目中来!
6421 1
Vue3 + Vite + TS项目引入iconfont图标(Svg方式)
|
监控 安全 网络性能优化
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
4742 7
|
小程序
【微信小程序】-- 全局配置 -- tabBar(十七)
【微信小程序】-- 全局配置 -- tabBar(十七)
【微信小程序】-- 全局配置 -- tabBar(十七)
|
域名解析 编解码 负载均衡
【域名解析DNS专栏】域名解析中的EDNS扩展:提升DNS协议灵活性
【5月更文挑战第27天】EDNS(Extension Mechanisms for DNS)是为了解决传统DNS协议在复杂网络环境下的灵活性和扩展性问题而诞生的技术。它允许在DNS请求和响应中添加额外选项,提高查询效率,支持更大数据范围,增强安全性,并实现负载均衡和故障转移。通过在DNS消息中包含EDNS部分,客户端和服务器能交换更多信息,实现更复杂的逻辑。EDNS的使用示例代码展示了如何在Python中创建和处理EDNS选项。随着技术进步,EDNS将在域名解析领域扮演更重要角色。
1405 1
|
JSON 数据格式
appium driver install uiautomator2 安装失败
appium driver install uiautomator2 安装失败