阅读 2613

在vite中使用svg(vue)(vite中文文档)

使用vite-plugin-svg-icons插件

  • 安装依赖

yarn add vite-plugin-svg-icons -D复制代码
  • 在vite.config.js中使用插件

import viteSvgIcons from 'vite-plugin-svg-icons';
import path from 'path';

export default () => {
  return {
    plugins: [
      viteSvgIcons({
        // 指定要缓存的图标文件夹
        iconDirs: [path.resolve(process.cwd(), 'src/icons')],
        // 执行icon name的格式
        symbolId: 'icon-[dir]-[name]',
      }),
    ],
  };
};复制代码
  • 在main.js中引入

import 'virtual:svg-icons-register';复制代码
  • 创建SvgIcon.vue组件

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

<script>
import { computed } from 'vue'
export default defineComponent({
  props: {
    iconClass: {
      type: String,
      required: true
    },
    className: {
      type: String,
      default: ''
    },
    color: {
      type: String,
      default: ''
    },
  },
  setup(props) {
    return {
      iconName: computed(() => `#icon-${props.iconClass}`),
      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>复制代码
  • 全局使用

在mian.js中加入

import SvgIcon from '@/components/SvgIcon'
app.component('svg-icon',SvgIcon)复制代码
  • 组件中使用

import { defineComponent } from 'vue'
import SvgIcon from '@/components/SvgIcon'
export default defineComponent({
  components:{
     SvgIcon
  }
})


作者:ChenEirk
链接:https://juejin.cn/post/7036949769842851854

 伪原创工具 SEO网站优化  https://www.237it.com/ 


文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐