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

server/2024/9/23 3:44:35/

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/server/23877.html

相关文章

K8s: 部署 kubernetes dashboard

部署 Dashboard K8s 官方有一个项目叫 dashboard&#xff0c;通过这个项目更方便监控集群的状态 官方地址: https://github.com/kubernetes/dashboard 通常我们通过命令行 $ kubectl get po -n kube-system 能够查看到集群所有的组件&#xff0c;但这样的方式比较不太直观 …

2024年的Java版本选择?java 17 安装

文章目录 2024年的Java版本选择&#xff1f;java 1.8 和 java17 什么区别&#xff1f;java 17 安装windows 11安装java 17C:\Program Files\Common Files\Oracle\Java\javapath是什么 2024年的Java版本选择&#xff1f; 3年前&#xff0c;java 1.8是市场主流&#xff08;还有一…

MATLAB 2016计算NDVI

MATLAB 2016计算NDVI 之前大二的一段MATLAB代码&#xff0c;突然找到&#xff0c;记录一下当时初学MATLAB的程序&#xff0c;用于读取TIFF计算归一化植被指数&#xff08;NDVI&#xff09;并将其保存为TIFF文件。 文章目录 MATLAB 2016计算NDVI读取波段数据初始化NDVI矩阵和转…

关于discuz论坛网址优化的一些记录(网站地图sitemap提交)

最近网站刚上线&#xff0c;针对SEO做了些操作&#xff0c;为了方便网站网页百度被收录&#xff0c;特此记录下 discuz有免费的sitemap插件可以用&#xff0c;打开后台管理&#xff0c;找到插件栏&#xff0c;然后找到更多插件&#xff0c;进入插件市场。 选择这个免费的sitem…

STM32 float浮点数转换成四个字节

float浮点数转换成四个字节 在C或C中&#xff0c;联合体&#xff08;union&#xff09;是一种特殊的数据结构&#xff0c;它允许在相同的内存位置存储不同的数据类型。联合体中的所有成员共享同一块内存区域&#xff0c;这意味着同一时间内&#xff0c;联合体只能保存其中一个…

最佳实践之部署安全且具有韧性的AI系统

AI安全是一个高速发展的研究领域。随着各政府、行业界和学术界发现AI技术潜在弱点以及利用这些弱点的技术&#xff0c;除了将传统的IT最佳实践应用于人工智能系统&#xff0c;他们需要不断升级更新AI人工智能系统以应对不断变化的风险。 AI功能的快速采纳、部署和应用使其成为了…

Llama 3消费级PC安装与运行教程

我是 Llama 的忠实粉丝。 Meta 发布其 LLM 开源代码对整个科技界来说是一项净收益&#xff0c;其宽松的许可证允许大多数中小型企业在几乎没有任何限制的情况下使用其 LLM&#xff08;当然&#xff0c;在法律范围内&#xff09;。 他们的最新版本是备受期待的 Llama 3。 Llama…

使用 MobX 实现数据持久化:最佳实践与技巧!

MobX 本身不提供数据持久化功能&#xff0c;但是可以结合其他库或技术来实现数据持久化。以下是几种常见的数据持久化方式&#xff1a; 使用 localStorage 或 sessionStorage 您可以使用 localStorage 或 sessionStorage 在浏览器中存储数据。在 MobX 中&#xff0c;您可以将…