为什么要使用svg而不直接使用字体图标?
SVG在既能满足现有图片的功能的前提下,又是矢量图,在可访问性上面也非常不错,并且有利于SEO和无障碍,在性能和维护性方面也比iconfont要出色许多
现在知道原因了吧,接下来,如何在新项目中使用它呢?
1.安装依赖npm i svg-sprite-loader@4.1.3
2.配置vue.config.js
const path = require('path')
function resolve (dir) {
return path.join(__dirname, dir)
}
module.exports = {
publicPath: './',
chainWebpack (config) {
// set svg-sprite-loader
config.module
.rule('svg')
.exclude.add(resolve('src/icons'))
.end()
config.module
.rule('icons')
.test(/\.svg$/)
.include.add(resolve('src/icons'))
.end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
.options({
symbolId: 'icon-[name]'
})
.end()
}
}
3.src下引入icons文件
4.componets/SvgIcon/index.vue 这个路径下引入utils/validate.js
5..icons文件在 main.js中导入 import '@/icons'
页面上使用的时候,
<svg-icon icon-class="star"/>,这个文件名是指icons文件下的svg里面的.svg的文件名