当前位置: 首页 > news >正文

建设银行手机官方网站下载工信部网站备案管理系统

建设银行手机官方网站下载,工信部网站备案管理系统,中国职业培训在线,企业网站的建设公司价格目录 需求svg使用简述插件使用简述实现安装插件1、配置vite.config.ts2、src/main.ts引入注册脚本3、写个icon组件4、使用组件 需求 在vue3项目中,需要批量导入某个文件夹内数量不确定的svg文件用来作为图标,开发完成后能够通过增减文件夹内的svg文件&a…

目录

  • 需求
  • svg使用简述
  • 插件使用简述
  • 实现
  • 安装插件
  • 1、配置vite.config.ts
  • 2、src/main.ts引入注册脚本
  • 3、写个icon组件
  • 4、使用组件

需求

在vue3项目中,需要批量导入某个文件夹内数量不确定的svg文件用来作为图标,开发完成后能够通过增减文件夹内的svg文件,从而影响图标的数量。

svg使用简述

svg是一种 xml语言,svg作为html标签使用的时候,除了svg标签<svg> <path d="*"/> </svg><img src="svg_url">外,还有很多方式可以使用。
本次仅使用其中的symbol属性详情参阅相关文档 MDN-svg

<symbol>元素用来在document中生成图形模板,提供给<use>元素实例化显示。

  1. <symbol>元素本身是隐藏的,实例化后的元素才会显示
  2. <symbol>元素仅需插入一次,可多次通过<use>复用
  3. < use xlink:href=“#symId” >标签属性xlink:href与< symbol id=“symId” >标签属性id相对应

插件使用简述

vite-plugin-svg-icons是一个vite插件,提供轻松导入svg文件作为symbol元素并插入到document中的功能。
使用起来也十分容易,只需要在vite.config.ts中加个配置,然后在src/main.ts中引入即可
详情参阅 插件中文文档

实现

原本我想使用vite提供的批量导入文件来实现import.meta.glob('/src/**/*.svg')
不过这种方式需要写一大堆异步方法去解决文件动态导入的问题,而且用户体验并不好,还引发了vue3报issue
所以最终选择使用插件在编译的时候就导入所有svg文件,解决了动态导入的问题,让业务逻辑更流畅

安装插件

插件官网
插件中文文档

npm i vite-plugin-svg-icons -D

1、配置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/assets/icon-svg/')],// 指定symbolId格式symbolId: 'icon-svg-[name]',}),}),],}
}

2、src/main.ts引入注册脚本

import 'virtual:svg-icons-register'

到这里svg 雪碧图就已经生成到页面的body中了
在这里插入图片描述

3、写个icon组件

接收一个name参数,对应symbolid属性

<template><svg aria-hidden="true" ><use :xlink:href="symbolId" /></svg>
</template><script setup lang="ts">
import { computed } from 'vue';interface Props {name: string;
}const props = defineProps<Props>();
const symbolId = computed(() => `#icon-svg-${props.name}`);
</script>

4、使用组件

在页面里使用组件

<template><el-icon :size="32"><!-- name值和文件名对应 --><SvgIcon name="404" /></el-icon>
</template><script setup lang="ts">
// 导入组件
import SvgIcon from '@/components/SvgIcon.vue';</script>

图标出来了
在这里插入图片描述

如果需要批量导入

<template><template v-for="(e, i) in svgList" :key="i"><el-icon :size="32"><component :is="e.module" :name="e.name"></component></el-icon></template>
</template><script setup lang="ts">
import SvgIcon from '@/components/SvgIcon.vue';// 引入/src/assets/icon-svg/文件夹下的所有svg文件
const svgModules = import.meta.glob('/src/assets/icon-svg/*.svg');
const svgList = Object.keys(svgModules).map((key) => ({name: key.replace(/^.*\/(\S+)\..*/, '$1'),module: SvgIcon,
}));
</script>

然后图标就有了
在这里插入图片描述

http://www.yayakq.cn/news/389600/

相关文章:

  • 银河盛世网站建设怎么修改网站域名
  • wordpress网站测速做平台交易网站怎么收款
  • 网站建设的参考文献深圳工业设计展2024
  • 外卖小程序源码西安网站建设seo
  • 中企动力 做网站 怎么样wordpress 为什么评论不能显示
  • 怎样设计电子商务网站的建设电商网站开发的背景及意义
  • 建设部网站退休注册人员微信小程序
  • google网站优化工具计算机软件开发就业前景
  • 电子商务网站建设方案推荐免费客源软件
  • 如何在建设银行网站预约纪念币产品的网络推广要点
  • 鞍山建设网站辅导班如何做网站
  • 餐饮培训网站建设seo有哪些经典的案例
  • 网站售价深圳企业网站制作设计方案
  • 手机响应式网站开发做网站如何来钱
  • 域名注册之后如何建设网站千博企业网站管理系统营销旗舰版
  • 濮阳做网站的公司有哪些最权威的品牌排行榜网站
  • 中国作风建设门户网站天律网站建设
  • 网站建设方案需要哪些步骤页面设计模板网站
  • 哈尔滨无障碍网站建设营业执照注册网站
  • 网站开发平台论文天猫商城网上购物首页
  • 如何做好一个网站运营上海抖音推广
  • 如何分析竞争对手网站网站内容优化方法有哪些
  • 如何介绍网站模板怎么做网站数据分析
  • 办网站需要什么大学学校网站建设方案
  • 网址大全最新版的国内做seo最好公司
  • 用织梦系统怎么做网站国外网站怎么做引流
  • 湘icp备 网站建设 农业 湖南广东建设集团
  • 三拼域名做网站长不长快速开发平台免费版
  • 一键生成网站wordpress自定义分类名称
  • 网站设置不拦截合肥哪家公司做网站