首页 > 其他分享 >vue3 SvgIcon配置

vue3 SvgIcon配置

时间:2022-11-17 17:47:40浏览次数:58  
标签:name default svg 配置 vite vue3 import SvgIcon icon

1、安装依赖插件vite-plugin-svg-icons

yarn add vite-plugin-svg-icons -D

2、安装glob

不安装会提示Error: Cannot find module 'fast-glob'
yarn add fast-glob -D

3、配置vite.config.ts

3.1 iconDirs所有的 svg的文件都存放在该文件夹下

3.2 symbolId指定use标签中href格式

导出名为createSvgIconsPlugin并加大括号,不然会提示TypeError: (0 , import_vite_plugin_svg_icons.default) is not a function

import { defineConfig } from 'vite'
import { resolve } from 'path'
import {createSvgIconsPlugin} from 'vite-plugin-svg-icons';

export default defineConfig({
  plugins: [
    createSvgIconsPlugin({
      // 指定要缓存的图标文件夹
      iconDirs: [path.resolve(process.cwd(), 'src/assets/svg')],
      // 执行icon name的格式
      symbolId: 'icon-[name]',
    })
  ]
});

4、在main.ts注册脚本

import 'virtual:svg-icons-register'; // 引入svg icon注册脚本

5、通过svg实现Icon组件

<template>
  <svg :class="svgClass" aria-hidden="true">
    <use :xlink:href="iconName" :fill="color" />
  </svg>
</template>

<script>
import { computed, defineComponent } from 'vue'
export default defineComponent({
  props: {
    name: {
      type: String,
      default: ''
    },
    color: {
      type: String,
      default: ''
    },
  },
  setup(props) {
    return {
      iconName: computed(() => `#icon-${props.name}`),
      svgClass: computed(() => {
        if (props.name) {
          return `gulu-icon ${props.name}`
        }
        return 'gulu-icon'
      })
    }
  }
})
</script>

<style lang="scss" scoped>
.gulu-icon {
  width: 3em;
  height: 3em;
  position: relative;
  fill: currentColor;
  vertical-align: -2px;
}
</style>

6、引用自定义Icon组件

<template>
	 <Icon name = "alipay" />
	 <Icon name = "qq" />
	 <Icon name = "wechat" />
</template>

<script lang="ts">
import {
  Icon,
} from './components/index'

export default {
  components: {
    Icon
  }
}
</script>

标签:name,default,svg,配置,vite,vue3,import,SvgIcon,icon
From: https://www.cnblogs.com/guozhiqiang/p/16900194.html

相关文章

  • 手把手,完整的从0搭建vite-vue3-ts项目框架:配置less+svg+pinia+vant+axios
    项目同步git:https://gitee.com/lixin_ajax/vue3-vite-ts-pinia-vant-less.git  为避免赘述,过于基础的点会直接省略或贴图,比如创建文件夹/文件的路径/路由一类配置相......
  • Nginx网站服务配置
    一、NGINX概述1.1nginx简介Nginx("enginex")是一个开源、高性能、高可靠的HTTP和反向代理服务器。Nginx是由IgorSysoev为俄罗斯访问量第二的Rambler.ru站......
  • nginx高并发优化之缓存配置
    一、配置http{proxy_cache_path/app/cache/levels=1:2keys_zone=proxy_cache:10mmax_size=10ginactive=60muse_temp_path=off;upstreambackend{server127......
  • OBS作为录屏时的参数配置
    设置-视频:  基础画布分辨率:1920x1080,笔记本的时候采用1280x720  输出缩放分辨率:1920x1080,笔记本的时候采用1280x720  缩小方法:Lanczos(锐化缩放,36个样本);若可选......
  • centos7安装及基本配置
    镜像源:https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.0.1406/isos/x86_64/ centos镜像后缀详解linux发行版:linux内核基础上+系统层(系统库,设备驱动程序,......
  • Java 开发环境配置
    1.JDK、JRE和JVMJDK:JavaDevelopmentToolKit(Java开发工具包)。JDK是整个JAVA的核心,包括了Java运行环境(JRE),Java工具(javac/java/jdb等)和Java基础的类库(即JavaAPI)......
  • fluentd的配置文件中指令,参数,插件,插件参数的区别是什么?
    source:指令 @type:参数。指定插件的名字。 forward/http:插件的名字。 port:插件的参数。 ......
  • 基于CVxx GPIO 配置使用说明
    PIN脚分为4或5组,其中183x为4组,182x,181x,180x为5组,对应gpio[0~4]或gpio[a~e]各组GPIO对应对应的基地址如下GPIO00x03020000GPIO10x03021000GPIO20x03022000GPIO......
  • ROSIntegration ROSIntegrationVision与虚幻引擎4(Unreal Engine 4)的配置
    ROSIntegrationROSIntegrationVision与虚幻引擎4(UnrealEngine4)的配置操作系统:Ubuntu18.04虚幻引擎:4.26.2 目录ROSIntegrationROSIntegrationVision与虚幻引擎4(Un......
  • coredump配置、产生、分析以及分析示例
    应用程序在运行过程中由于各种异常或者bug导致退出,在满足一定条件下产生一个core文件。什么是coredump?通常情况下coredmp包含了程序运行时的内存,寄存器状态,堆栈指针,内存......