vue3+vite项目中显示SVG图片

使用vite显示本地svg图标

        vite-plugin-svg-icons是一个Vite插件,其作用是将SVG图标文件转换为Vue组件,以便在Vue项目中使用。

        使用vite-plugin-svg-icons插件,可以将SVG图标文件导入到项目中,并将其转换为可复用的Vue组件。这样,就可以像使用普通Vue组件一样使用这些SVG图标,包括在模板中直接使用、传递属性、绑定事件等。

        该插件还提供了一些额外的功能,如自动按需引入图标、支持图标的自定义命名、支持指定图标大小等。

        总之,vite-plugin-svg-icons插件的作用是简化在Vue项目中使用SVG图标的过程,提供了更加灵活和方便的方式来管理和使用这些图标。

vite-plugin-svg-icons 安装

node version: >=12.0.0

vite version: >=2.0.0

npm i vite-plugin-svg-icons -D
// 或者
yarn add vite-plugin-svg-icons -D
// 或者
pnpm install vite-plugin-svg-icons -D

配置使用vite-plugin-svg-icons

  • vite.config.ts 中的配置插件
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'export default () => {return {plugins: [createSvgIconsPlugin({// 指定需要缓存的图标文件夹iconDirs: [path.resolve(process.cwd(), 'src/icons')],// 指定symbolId格式symbolId: 'icon-[dir]-[name]',/*** 自定义插入位置* @default: body-last*/inject?: 'body-last' | 'body-first'/*** custom dom id* @default: __svg__icons__dom__*/customDomId: '__svg__icons__dom__',}),],}
}
  • 在 src/main.ts 内引入注册脚本
import 'virtual:svg-icons-register'

到这里 svg 已经引入可以使用

如何在Vue 组件使用

/src/components/SvgIcon.vue

<template><svg aria-hidden="true"><use :xlink:href="symbolId" :fill="color" /></svg>
</template><script>
import { defineComponent, computed } from 'vue'export default defineComponent({name: 'SvgIcon',props: {prefix: {type: String,default: 'icon',},name: {type: String,required: true,},color: {type: String,default: '#333',},},setup(props) {const symbolId = computed(() => `#${props.prefix}-${props.name}`)return { symbolId }},
})
</script>

icons 目录结构

# src/icons- icon1.svg
- icon2.svg
- icon3.svg
- dir/icon1.svg

/src/App.vue

<template><div><SvgIcon name="icon1"></SvgIcon><SvgIcon name="icon2"></SvgIcon><SvgIcon name="icon3"></SvgIcon><SvgIcon name="dir-icon1"></SvgIcon></div>
</template><script>
import { defineComponent, computed } from 'vue'import SvgIcon from './components/SvgIcon.vue'
export default defineComponent({name: 'App',components: { SvgIcon },
})
</script>

优点:

  1. 可扩展性:vite-plugin-svg-icons 提供了灵活的配置选项,允许开发者自定义图标的加载和使用方式。

  2. 轻量级:vite-plugin-svg-icons 是一个轻量级的插件,没有额外的依赖,可以快速集成到现有的项目中。

  3. 性能优化:vite-plugin-svg-icons 可以将 SVG 图标转换为内联的 Vue 组件,减少 HTTP 请求,提高页面加载速度。

  4. 简化开发流程:使用 vite-plugin-svg-icons,开发者可以直接在代码中引用 SVG 图标,无需手动处理 SVG 文件。

  5. 兼容性:vite-plugin-svg-icons 支持多种类型的 SVG 图标,包括普通的 SVG 文件、Symbol 图标和图标字体等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/696620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语文成绩(洛谷)

题目 原题 题目背景 语文考试结束了&#xff0c;成绩还是一如既往地有问题。 题目描述 语文老师总是写错成绩&#xff0c;所以当她修改成绩的时候&#xff0c;总是累得不行。她总是要一遍遍地给某些同学增加分数&#xff0c;又要注意最低分是多少。你能帮帮她吗&#xff1f; 输…

【springboot】 `@Column` 注解的使用

定义一个实体的属性时&#xff0c;如果和数据库的列名不一致的时候&#xff0c;需要用column 建立映射关系。 Column 是 Java 持久化 API&#xff08;Java Persistence API&#xff0c;JPA&#xff09;中的注解之一&#xff0c;用于指定实体类中属性与数据库表中列的映射关系。…

2024牛客(4)K题

登录—专业IT笔试面试备考平台_牛客网 using i64 long long; using ll long long; constexpr ll M 1e9 7; template<class Info> struct SegmentTree {int n;std::vector<Info> info;SegmentTree() : n(0) {}SegmentTree(int n_, Info v_ Info()) {init(n_, …

Vue样式绑定

1. 绑定 HTML class ①通过class名称的bool值判断样式是否被启用 <template><!--通过样式名称是否显示控制样式--><div :class"{ haveBorder: p.isBorder, haveBackground-color: p.isBackgroundcolor }">此处是样式展示区域</div><br /…

Linux篇:开发工具yum/vim/gcc/g++/Makefile/gdb

一. yum&#xff1a;软件包管理器 什么是软件包&#xff1f; 在Linux 下安装软件 , 一个通常的办法是下载到程序的源代码 , 并进行编译 , 得到可执行程序 . 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好 , 做成软件包 (可以理解成windows 上的安装程序) 放在…

Linux C++ 字符编码转换 GBK与UTF8互转

Linux 下使用 iconv 命令可以转换文件的编码 iconv -f GBK -t UTF-8 input_file -o output_fileC 代码 使用 iconv 函数 iconv 函数签名&#xff1a; size_t iconv(iconv_t cd,、 char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); 需要注意的是&…

Python基础20 面向对象(3)多态、封装、反射

文章目录 一、多态1、什么是多态2、多态小实验 二、封装1、什么是封装2、内部属性的约定 三、反射1、什么是反射2、四个实现自省的函数&#xff08;1&#xff09;hasattr(object,name)&#xff08;2&#xff09;getattr(object,name,defaultNone)&#xff08;3&#xff09;seta…

神秘人暗访:行政窗口为什么要开展神秘顾客调研

在竞争日益激烈的服务市场中&#xff0c;行政窗口作为公共服务的直接提供者&#xff0c;其服务质量的好坏直接关系到政府的形象和公众对政府的信任度。为了更好地满足市民的需求&#xff0c;提升服务质量&#xff0c;开展神秘顾客调查显得尤为重要。神秘顾客调查的必要性包括以…

内网穿透的应用-如何本地部署Elasticsearch搜索分析引擎实现并发布公网远程访问

文章目录 系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装 Cpolar4. 创建Elasticsearch公网访问地址5. 远程访问Elasticsearch6. 设置固定二级子域名 Elasticsearch是一个基于Lucene库的分布式搜索和分析引擎&#xff0c;它提供了一个分布式、多…

探索Flask框架:打造优雅而强大的Web应用

在当今互联网时代&#xff0c;Web应用的需求日益增长&#xff0c;而作为开发者&#xff0c;我们需要一个简洁明快、灵活可扩展的框架来满足这些需求。Flask框架作为一个Python微型框架&#xff0c;在其简洁的设计理念和丰富的扩展生态系统之间找到了完美的平衡&#xff0c;为我…

洛谷--二分(Java实现)

洛谷 B3627 立方根 题目描述 给定正整数 n&#xff0c;求 √n​。答案向下取整。 输入格式 仅一行&#xff0c;一个正整数 n。 输出格式 仅一行&#xff0c;一个正整数&#xff0c;表示√n。向下取整输出。 输入输出样例 输入 #1 27 输出 #1 3 输入 #2 100000 输…

ORACLE之 decode函数

语法&#xff1a; DECODE(expression, search1, result1, search2, result2, ..., default_result) 其中&#xff0c;expression是要进行比较的表达式&#xff0c;search1, search2等是可能的值&#xff0c;result1, result2等是对应的结果。如果expression等于search1&#x…

Java类的成员、继承、多态

当谈论Java类的成员、继承和多态时&#xff0c;我们谈论的是面向对象编程的基本概念。让我逐一介绍&#xff1a; 1. **成员**&#xff1a; - **字段&#xff08;Field&#xff09;**&#xff1a;也称为属性或变量&#xff0c;用于存储对象的状态信息。 - **方法&#xf…

防御保护第六次作业

需求: 8&#xff0c;分公司内部的客户端可以通过域名访问到内部的服务器 9&#xff0c;假设内网用户需要通过外网的web服务器和pop3邮件服务器下载文件和邮件&#xff0c;内网的FTP服务器也需要接受外网用户上传的文件。针对该场景进行防病毒的防护。 10&#xff0c;我们需要针…

C++模板从入门到入土

1. 泛型编程 如果我们需要实现一个不同类型的交换函数&#xff0c;如果是学的C语言&#xff0c;你要交换哪些类型&#xff0c;不同的类型就需要重新写一个来实现&#xff0c;所以这是很麻烦的&#xff0c;虽然可以cv一下&#xff0c;有了模板就可以减轻负担。 下面写一个适…

日常leetcode代码思路总结(持续更新)

日常leetcode代码思路总结&#xff08;持续更新&#xff09; 难易leecode题号题目描述思路简单121. 买卖股票的最佳时机只准一次买卖0表示持有&#xff0c;1表示不持有&#xff1b;dp[0][i] max(dp[0][i-1], -prices[i])&#xff1b;dp[1][i] max(dp[1][i-1], dp[0][i] pric…

Openwrt删除内核patch

环境说明 ubuntu-18.04 openwrt-21.02 安装quilt sudo apt install quilt quilt指令说明 Usage: quilt [--trace[=verbose]] [--quiltrc=XX] command [-h] ...quilt --version Commands are:add fold mail refresh snapshotannotate fork new rem…

基于springboot+vue的中小企业设备管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

H 桥逆变方式介绍(双极性)

单极性控制和双极性控制是说IGBT四个管子的控制 前面所说的单极性控制是其中一个管子开通、关闭另外一个管子持续开通 而双极性是四个管子中的两个管子同时导通&#xff0c;同时关断。彼此交替变化 所以当方波出现低电平时&#xff0c;是一对管子同时导通&#xff0c;出现高电…

2.21 Qt day2 菜单栏/工具栏/状态栏/浮动窗口、UI界面、信号与槽

思维导图 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;…