Vue3中使用svg图标

news/2024/10/31 3:25:53/

文章目录

    • 一、为什么要使用svg图标
    • 二、安装SVG依赖插件
    • 三、在vite.config.ts中配置插件
    • 四、入口文件导入
    • 五、svg封装为全局组件

一、为什么要使用svg图标

在开发项目的时候经常会用到svg矢量图,而且我们使用SVG以后,页面上加载的不再是图片资源,
这对页面性能来说是个很大的提升,而且我们SVG文件比img要小的很多,放在项目中几乎不占用资源。

二、安装SVG依赖插件

pnpm install vite-plugin-svg-icons -D

三、在vite.config.ts中配置插件

import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'
export default () => {return {plugins: [createSvgIconsPlugin({// Specify the icon folder to be cachediconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],// Specify symbolId formatsymbolId: 'icon-[dir]-[name]',}),],}
}

四、入口文件导入

import 'virtual:svg-icons-register'

五、svg封装为全局组件

因为项目很多模块需要使用图标,因此把它封装为全局组件!!!
在src/components目录下创建一个SvgIcon组件:代表如下

<template><div><svg :style="{ width: width, height: height }"><use :xlink:href="prefix + name" :fill="color"></use></svg></div>
</template><script setup lang="ts">
defineProps({//xlink:href属性值的前缀prefix: {type: String,default: '#icon-'},//svg矢量图的名字name: String,//svg图标的颜色color: {type: String,default: ""},//svg宽度width: {type: String,default: '16px'},//svg高度height: {type: String,default: '16px'}})
</script>
<style scoped></style>

在src文件夹目录下创建一个index.ts文件:用于注册components文件夹内部全部全局组件!!!

import SvgIcon from './SvgIcon/index.vue';
import type { App, Component } from 'vue';
const components: { [name: string]: Component } = { SvgIcon };
export default {install(app: App) {Object.keys(components).forEach((key: string) => {app.component(key, components[key]);})}
}

在入口文件引入src/index.ts文件,通过app.use方法安装自定义插件

import gloablComponent from './components/index';
app.use(gloablComponent);

http://www.ppmy.cn/news/83572.html

相关文章

pyton打包成exe程序简易教程

我们知道&#xff0c;Python程序需要有python环境才能够运行的&#xff0c;但当我们开发出一个程序之后&#xff0c;给到用户 那么用户是不会去添加这个python环境的。 所以为了用户也能够正常使用&#xff0c;我们就需要将这个程序打包成exe程序。 1.打包之前需要先下载一个模…

java 如何保证线程安全

1 互斥同步 互斥同步是最常见的一种并发正确性保障手段。同步是指在多线程并发访问共享数据时&#xff0c;保证共享数据在同一时刻只被一个线程使用&#xff08;同一时刻&#xff0c;只有一个线程在操作共享数据&#xff09;。而互斥是实现同步的一种手段&#xff0c;临界区、…

死磕测试10余年,呕心整理出了核心知识点已经做成PDF,无私奉献

前言 想在面试、工作中脱颖而出&#xff1f;想在最短的时间内快速掌握软件测试的核心基础知识点&#xff1f;想要成为一位优秀的软件测试工程师&#xff1f;本篇文章能助你一臂之力&#xff01; 目前正值招聘求职旺季&#xff0c;很多同学对一些新技术名词都能侃侃而谈&#…

finallshell mac SSH工具

一、FinallShell 是什么 FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求. 特色功能: 云端同步,免费海外服务器远程桌面加速,ssh加速,本地化命令输入框,支持自动补全,命令历史,自定义命令参数 二、主要特性 …

Java中的Hash碰撞是什么?该如何解决?

在Java中&#xff0c;哈希碰撞(Hash Collision)是指不同的输入数据产生了相同的哈希值。哈希函数是将输入映射到固定大小的哈希值的函数&#xff0c;而碰撞指的是两个不同的输入映射到了相同的哈希值。 哈希碰撞可能导致哈希表、哈希集合或哈希映射等数据结构的性能下降。当两个…

使用U盘给笔记本安装Deepin桌面版(Ubuntu同理)

一、镜像下载 Deepin官网官方ISO镜像源 下载完成后会得到一个 deepin-desktop-community-20.9-amd64.iso 的文件 这个文件就是我们要安装的Deepin的系统镜像文件 二、制作USB启动盘 准备一张至少8G的U盘 或者 内存卡读卡器 这里我选择使用 Rufus 制作USB启动盘 Rufus官网…

Tomcat配置https协议证书-阿里云,Nginx配置https协议证书-阿里云,Tomcat配置https证书pfx转jks

Tomcat/Nginx配置https协议证书 前言Tomcat配置https协议证书-阿里云方式一 pfx配置证书重启即可 方式二 jkspfx生成jks配置证书重启即可 Nginx配置https协议证书-阿里云实现方式重启即可 其他Tomcat相关配置例子如下nginx配置相关例子如下 前言 阿里云官网&#xff1a;https:…

Java高并发核心编程(JUC)—线程详细笔记

进程 线程 线程方法 线程原理 线程状态 查看线程 进程 概述 进程&#xff1a;程序是静止的&#xff0c;进程实体的运行过程就是进程&#xff0c;是系统进行资源分配的基本单位. 一般来说&#xff0c;一个进程由程序段&#xff08;包含代码、指令集合)、数据段&#xff08;进程…