美文网首页
vue3.0使用svg(亲测有效)

vue3.0使用svg(亲测有效)

作者: goodTime_luo7 | 来源:发表于2021-12-30 15:24 被阅读0次
一、安装依赖
npm install svg-sprite-loader -D
二、新建文件夹和文件src/components/SvgIcon/index.vue
<template>
  <svg :class="svgClass" aria-hidden="true">
    <use :xlink:href="iconName"></use>
  </svg>
</template>
<script>
import { computed } from "@vue/reactivity";
export default {
  name: "baseSvgIcon",
  props: {
    iconClass: { type: String },
    className: { type: String },
  },
  setup(props) {
    const iconName = computed(() => {
      return props.iconClass ? `#icon-${props.iconClass}` : "#icon";
    });
    const svgClass = computed(() => {
      return props.className ? "svg-icon " + props.className : "svg-icon";
    });
    return { iconName, svgClass };
  },
};
</script>
<style scoped>
.svg-icon {
  width: 1em;
  height: 1em;
  vertical-align: -0.15em;
  fill: currentColor;
  overflow: hidden;
}
</style>
三、src下新建文件夹icons/svg,用来存放.svg文件
四、修改vue.config.js文件
const path = require('path')

function resolve(dir) {
  return path.join(__dirname, '.', dir)
}

module.exports = {
  chainWebpack: config => {
    config.module.rules.delete("svg"); //重点:删除默认配置中处理svg,
    config.module
      .rule('svg-sprite-loader')
      .test(/\.svg$/)
      .include
      .add(resolve('src/icons')) //处理svg目录
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
  },
};
五、修改main.js
const app = createApp(App)
// 导入SvgIcon组件
import SvgIcon from '@/components/SvgIcon/index.vue' 
const req = require.context('@/icons/svg', false, /\.svg$/)  
req.keys().map(req)
app.component('svg-icon', SvgIcon)

相关文章

网友评论

      本文标题:vue3.0使用svg(亲测有效)

      本文链接:https://www.haomeiwen.com/subject/cpiiqrtx.html