前端项目学习记录1:svg图标的封装与使用

news/2024/11/14 21:51:18/

1.下载svg依赖

pnpm i vite-plugin-svg-icons -D

          还有一个,下面的不安装可能会报错

pnpm i fast-glob -D

2.vite.config.ts配置

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from "path";
//引入svg需要用到的插件
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
export default defineConfig({//TODOplugins: [vue() , createSvgIconsPlugin({iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],symbolId: 'icon-[dir]-[name]'})],//ENDresolve:{alias:{"@":path.resolve(__dirname , "./src"),}}
})

3.main.ts配置

import { createApp } from 'vue'
import App from './App.vue'
//引入element-plus插件与样式
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
///
//引入element-plus国际化
//忽略当前文件ts类型检测,要不然打包会失败
//@ts-ignore 
import zhCn from 'element-plus/es/locale/lang/zh-cn.mjs'//TODO
//引入svg配置文件
import 'virtual:svg-icons-register'//引入自定义插件对象:注册整个项目全局组件
import globalComponent from '@/components'
createApp(App).use(ElementPlus,{ locale: zhCn }).use(globalComponent).mount('#app')
//END

4.文件夹创建

        assets -> icons -> ...svg

        assets里面创建icons文件夹,里面放.svg矢量图标(记得去色)

5.SvgIcon组件

        components -> SvgIconG -> index.vue

<template><svg :style="{ width , height }"><use :xlink:href="prefix + name" :fill="color"></use></svg>
</template><script setup lang='ts'>
defineProps({name: {type: String,}, width: {type: String,default: '1em'}, height: {type: String,default: '1em'}, color: {type: String,default: '#333'}, prefix: {type: String,default: '#icon-'}
})
</script><style scoped lang="scss"></style>

6.自定义注册全局插件

        components里面创建index.ts

import SvgIconG from './SvgIconG/index.vue';
import ... from '...';
//全局对象
const allGlobalComponents :any = { SvgIconG , ... }
export default {install(app : any){Object.keys(allGlobalComponents).forEach(key => {app.component(key, allGlobalComponents[key]);})}
}

        然后在main.ts里面注册就行(方法在上面main.ts里面)


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

相关文章

数据分析:扩增子分析(qiime2平台全流程分析)

Amplicon sequencing analysis pipeline through qiime2 platform qiime2是扩增子数据分析的最佳平台之一&#xff0c;其提供了大量从原始data到统计分析的插件&#xff0c;尤其是它的可重复分析且可扩展插件的理念使得其成为扩增子分析首选的平台。 Platform qiime2是扩增子…

SpringMVC基础篇(三)

文章目录 1.SpringMVC映射请求数据1.获取请求头信息1.VoterHandler.java2.request_parameter.jsp3.结果展示 2.自动封装javabean1.需求分析2.应用实例1.Master.java2.Pet.java3.后端接口4.结果展示 3.底层机制 3.调用servlet-api1.基本说明2.代码实例1.接口2.结果展示 3.注意事…

Vue中使用iconfont-阿里巴巴矢量图标库

一、简介 阿里巴巴矢量图标库&#xff08;Iconfont&#xff09;是一个由阿里巴巴提供的矢量图标库&#xff0c;包含了大量的矢量图标&#xff0c;可以供设计师和开发者在线浏览和下载使用。这个库的图标都是由用户上传和分享的&#xff0c;因此种类非常丰富&#xff0c;几乎涵…

【ChatGPT】AI评论家,适合点评论文和文章的Prompt模

原文&#xff1a;【ChatGPT】AI评论家&#xff0c;适合点评论文和文章的Prompt模板 - 知乎 总结了一个提示词模板提供给大家&#xff0c;适合的场景&#xff1a; 1. 家长辅导孩子写作 2. 老师给学生的作文打分 3. 业余评论家点评文章 4. 小编审稿&#xff08;可以早下班了&…

软件工程物联网方向嵌入式系统复习笔记--嵌入式系统基础

1 嵌入式系统基础 1.1 嵌入式系统基础 1.1.1 嵌入式系统概念 嵌入式系统一般定义 是指以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 就像一般的计算机系统包括软件和硬件一样&#xff0c;…

线上剧本杀小程序:创新玩法下带来的市场活力

近几年来&#xff0c;剧本杀作为一种新型的游戏娱乐模式&#xff0c;深受年轻人的喜欢&#xff0c;成为了当下年轻人娱乐休闲的主要方式之一。剧本杀行业在经历过一段时间的“野蛮生长”后&#xff0c;游戏内容和服务得到的升级发展&#xff0c;游戏的趣味性和体验感也逐渐增强…

耐酸碱腐蚀PFA冷凝回流装置进口透明聚四氟材质PFA梨形漏斗特氟龙圆底烧瓶

PFA分液漏斗&#xff1a;也叫特氟龙分液漏斗、特氟龙梨型分液漏斗。 规格参考&#xff1a;125ml、250ml、500ml、1000ml 其主要特性有&#xff1a; 1.内壁对溶剂无粘贴性和吸附&#xff0c;可完全排空&#xff0c;分界面清晰可见&#xff1b; 2.密封性好&#xff0c;可防止…

Maven基础篇2

1.依赖范围 只要是jar默认情况下可以在任何地方使用&#xff0c;可以通过scope标签进行设定其范围 scope的不同参数以及指定范围 关于servlet-api不参与打包&#xff0c;原因服务器上tomcat也有servlet-api如果版本不同会起冲突&#xff1b;因此需要使用scope写provided来进…