让SVG以组件的方式引入吧!
安装
npm i -D vue-svg-loader
or
yarn add -D vue-svg-loader
webpack 配置
module.exports = {
module: {
rules: [
{
test: /\.svg$/,
loader: 'vue-svg-loader',
},
],
},
};
vue-cli 3 配置
module.exports = {
chainWebpack: (config) => {
const svgRule = config.module.rule('svg');
svgRule.uses.clear();
svgRule
.use('vue-svg-loader')
.loader('vue-svg-loader');
},
};
如何使用
<template>
<nav>
<a>
<WebpackLogo class="logo" />
webpack
</a>
</nav>
</template>
<script>
import WebpackLogo from './public/webpack.svg';
export default {
name: 'Example',
components: {
WebpackLogo
},
};
</script>
<style scoped lang='scss'>
.logo {
width: 28px;
height: 28px;
margin-right: 10px;
fill: #336699;
&:hover {
fill: #ff3366;
}
}
</style>
从以上代码看出,我们可以很方便的改变 svg 属性,而且比 url 引入和直接嵌入 HTML 看起来好很多。推荐大家使用。