使用vue加載SVG圖片,有兩種方法,一種是雪花loader,一種是vue-svg-loader(官網推薦)。vue
在本身的項目中,本次使用vue-svg-loader加載svg圖片,而且對圖片進行屬性修改。操做步驟:webpack
1:下載svg-vue-loader ,並安裝git
npm i -D vue-svg-loader vue-template-compiler github
下載babel-loader,並安裝web
npm install -D babel-loader @babel/core @babel/preset-env webpacknpm
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圖片了babel
<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,這樣就能夠兼容了。app