news 2026/5/10 8:42:57

Vue—— Vue3 SVG 图标系统设计与实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue—— Vue3 SVG 图标系统设计与实现

背景问题:
需要统一管理项目中的图标资源。

方案思考:
使用 SVG 图标系统,便于管理和使用。

具体实现:
首先安装必要的依赖:

npminstallvite-plugin-svg-icons

配置 Vite 插件:

// vite.config.jsimport{defineConfig}from'vite'import{createSvgIconsPlugin}from'vite-plugin-svg-icons'importpathfrom'path'exportdefaultdefineConfig({plugins:[createSvgIconsPlugin({// 指定需要缓存的图标文件夹iconDirs:[path.resolve(process.cwd(),'src/assets/icons')],// 指定symbolId格式symbolId:'icon-[dir]-[name]',})],})

创建 SVG 图标组件:

<!-- components/SvgIcon.vue --> <template> <svg :class="svgClass" aria-hidden="true" v-on="$attrs"> <use :href="iconName" :fill="color" /> </svg> </template> <script setup> import { computed } from 'vue' const props = defineProps({ name: { type: String, required: true }, color: { type: String, default: '#333' }, className: { type: String, default: '' } }) const iconName = computed(() => `#icon-${props.name}`) const svgClass = computed(() => { if (props.className) { return `svg-icon ${props.className}` } return 'svg-icon' }) </script> <style scoped> .svg-icon { width: 1em; height: 1em; position: relative; fill: currentColor; vertical-align: -2px; } </style>

在 main.js 中注册插件:

// main.jsimport{createApp}from'vue'import{register}from'vite-plugin-svg-icons/client'constapp=createApp(App)// 注册 SVG 图标register(app)

使用示例:

<template> <div class="icon-demo"> <SvgIcon name="home" /> <SvgIcon name="user" /> <SvgIcon name="setting" /> <SvgIcon name="search" color="#409EFF" /> </div> </template> <script setup> import SvgIcon from '@/components/SvgIcon.vue' </script>

完整的图标文件结构:

src/ assets/ icons/ home.svg user.svg setting.svg search.svg

其中 SVG 文件示例:

<!-- src/assets/icons/home.svg --><svgxmlns="http://www.w3.org/2000/svg"viewBox="0 0 1024 1024"><pathd="M1024 512c0 282.77-229.23 512-512 512S0 794.77 0 512 229.23 0 512 0s512 229.23 512 512z"fill="#2c2c2c"/></svg>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 20:22:07

GPT-OSS-20B版本管理:多模型共存部署策略

GPT-OSS-20B版本管理&#xff1a;多模型共存部署策略 1. 引言&#xff1a;为什么需要多模型共存&#xff1f; 你有没有遇到过这种情况&#xff1a;刚部署完一个大模型&#xff0c;结果下一个项目要用另一个架构&#xff0c;又得重新配置环境、清理显存、重装依赖&#xff1f;…

作者头像 李华
网站建设 2026/4/24 23:40:56

YOLO11实际项目应用:仓储货物识别系统搭建全过程

YOLO11实际项目应用&#xff1a;仓储货物识别系统搭建全过程 在智能仓储和物流管理日益智能化的今天&#xff0c;自动化货物识别成为提升效率、降低人工成本的关键环节。传统的人工盘点或条码扫描方式已难以满足高密度、高频次的作业需求。而基于深度学习的目标检测技术&#…

作者头像 李华
网站建设 2026/5/3 10:05:32

小白友好!FSMN-VAD控制台5分钟快速搭建

小白友好&#xff01;FSMN-VAD控制台5分钟快速搭建 你是否试过把一段10分钟的会议录音丢进语音识别系统&#xff0c;结果发现前8分钟全是空调声、翻纸声和沉默&#xff1f;识别引擎吭哧吭哧跑完&#xff0c;输出一堆“嗯”“啊”“这个…那个…”——不仅耗时&#xff0c;还拉…

作者头像 李华
网站建设 2026/5/2 13:49:00

Qwen3-Embedding-4B如何升级?模型热更新部署实战

Qwen3-Embedding-4B如何升级&#xff1f;模型热更新部署实战 在AI服务持续迭代的今天&#xff0c;模型版本升级不再意味着停机、重建、重新配置——尤其对嵌入服务这类高频调用、低延迟敏感的基础设施而言。Qwen3-Embedding-4B作为Qwen家族最新一代高性能文本嵌入模型&#xf…

作者头像 李华
网站建设 2026/5/2 19:39:52

DeepSeek-R1-Distill-Qwen-1.5B数据安全实践:私有化部署方案

DeepSeek-R1-Distill-Qwen-1.5B数据安全实践&#xff1a;私有化部署方案 1. 引言&#xff1a;为什么选择私有化部署&#xff1f; 在当前AI模型广泛应用的背景下&#xff0c;数据安全和隐私保护成为企业与开发者最关心的问题之一。尤其是涉及数学推理、代码生成和逻辑推导等敏…

作者头像 李华
网站建设 2026/5/4 3:57:41

JetBrains IDE评估期重置工具全解析:突破限制的专业解决方案

JetBrains IDE评估期重置工具全解析&#xff1a;突破限制的专业解决方案 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 一、开发困境与解决方案 当你正专注于一个紧急项目&#xff0c;IDE突然弹出试用期结束的提…

作者头像 李华