使用vue加载SVG图片,有两种方法,一种是雪花loader,一种是vue-svg-loader(官网推荐)。在自己的项目中,本次使用vue-svg-loader加载svg图片,并且对图片进行属性修改。操作步骤:
1:下载svg-vue-loader ,并安装
npm i -D vue-svg-loader vue-template-compiler
下载babel-loader,并安装
npm install -D babel-loader @babel/core @babel/preset-env webpack
2:本人使用vuecli3脚手架,在vue.config.js配置如下
module.exports = { chainwebpack: (config) => {const svgRule = config.module.rule('svg');
svgRule.uses.clear();
svgRule .use('babel-loader') .loader('babel-loader') .end() .use('vue-svg-loader') .loader('vue-svg-loader'); },};
3. 在babel.config.js文件中修改为:
module.exports = {
presets: [
'@vue/app'
],
sourceType:'unambiguous'
}
4,这样就可以加载svg图片了
<template>
<nav>
<a href="https://github.com/vuejs/vue">
<VueLogo />
Vue
</a>
<a href="https://github.com/svg/svgo">
<SVGOLogo />
SVGO
</a>
<a href="https://github.com/webpack/webpack">
<WebpackLogo />
webpack
</a>
</nav>
</template>
<script>
import VueLogo from './public/vue.svg';
import SVGOLogo from './public/svgo.svg';
import WebpackLogo from './public/webpack.svg';
export default {
name: 'Example',
components: {
VueLogo,
SVGOLogo,
WebpackLogo,
},
};
</script>
注意,如果在配置vue.config.js中的vue-svg-loader时,不去配置babel,只兼容谷歌和火狐,而IE,Edge不兼容,会报错,原因是IE,Edge使用ES5语法,ES6语法浏览器不认识,所以必须使用Babel进行转码,将ES6语法翻译成ES5,这样就可以兼容了