一.了解SVG是什么
SVG(Scalable Vector Graphics)可缩放矢量图形,是一种用于描述基于二维的矢量图形的 XML 标记语言,其基本矢量显示对象包括矩形、圆、椭圆、多边形、直线、任意曲线等,还能显示文字对象和嵌入式外部图像(包括 PNG、JPEG、SVG 等)。实际项目中大多数图标都是使用的 SVG 图标文件,其主要有以下几个优点:
1.内容可读,文件是纯粹的 XML。
2.图像文件小,可伸缩性强。
3.矢量放缩,能以不牺牲图像质量为前提,进行任意缩放。
4.还能基于 DOM 模型实现动态和一些交互功能
二.使用svg-icon的配置
- 安装依赖npm i svg-sprite-loader
- 在 vue.config.js进行配置
const path = require('path')
function resolve(dir) {
return path.join(__dirname, dir)
}
// 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()
const path = require('path')
function resolve(dir) {
return path.join(__dirname, dir)
}
// 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()
三.创建src/icons文件夹
- 创建src/icons文件,写入svg和index.js
2.在index.js写入以下代码
import Vue from 'vue'
import SvgIcon from '@/components/SvgIcon'// svg component
// register globally
Vue.component('svg-icon', SvgIcon)
const req = require.context('./svg', false, /.svg$/)
const requireAll = requireContext => requireContext.keys().map(requireContext)
requireAll(req)
3.可以通过iconfont-阿里巴巴矢量图标库 去下载你要用的svg,复制地址并写入svg中
4. 在components下面新建SvgIcon组件,并对index进行配置
四.其他配置及引入
- 在utils/validate.js配置
export function isExternal(path) {
return /^(https?:|mailto:|tel:)/.test(path)
}
2.在main.js中引入
五.使用 1.使用格式



