如果按一般方法引入SVG,打印出来的只是字符串路径。
<script lang="ts">import x from "@/assets/icons/label.svg"console.log(x) //字符串路径</script>
需要按照以下步骤:
使用svg-sprite-loader引入icon
- 安装svg-sprite-loader
yarn add svg-sprite-loader -D//作用是将svg变成symbol标签,再将symbol标签放到svg标签里面。
- 添加配置vue.config.js文件
const path = require('path')module.exports = {lintOnSave: false,chainWebpack: config => {const dir = path.resolve(__dirname, 'src/assets/icons')config.module.rule('svg-sprite').test(/\.svg$/).include.add(dir).end().use('svg-sprite-loader').loader('svg-sprite-loader').options({extract: false}).end().use('svgo-loader').loader('svgo-loader').tap(options => ({...options, plugins: [{removeAttrs: {attrs: 'fill'}}]})).end()config.plugin('svg-sprite').use(require('svg-sprite-loader/plugin'), [{plainSprite: true}])config.module.rule('svg').exclude.add(dir)}}
这时如果重新打印会发现打印出来的结果不是字符串路径。
- 将svg标签和use标签引入svg即可。
<template><div><svg><use xlink:href="#xxx"/></svg></div></template>
