vue-svg-icon

svg组件封装
  1. 在src/components 文件夹下新建SvgIcon文件夹, 文件夹下新建index.vue文件, 内容如下





  1. 在src目录下新建 icons 目录, 目录结构如下
    a. svg文件夹 主要存放svg格式文件
    b. index.js 将svgicon 组件注册到全局, 内容如下
import Vue from 'vue'
import SvgIcon from '@/components/SvgIcon'

Vue.component('svg-icon', SvgIcon)

const req = require.context('./svg', false, /\.svg$/)
// 这行代码就会去当前目录下 svg 文件夹(不包含子目录)下面的找所有文件名以 .svg 结尾的文件能被 require 的文件。
// 更直白的说就是 我们可以通过正则匹配引入相应的文件模块
/** require.context有三个参数:
* directory:说明需要检索的目录
* useSubdirectories:是否检索子目录
* regExp: 匹配文件的正则表达式
*/
const requireAll = requireContext => requireContext.keys().map(requireContext)
requireAll(req)
  1. 在main.js引用
// 引入svg
import './icons'
  1. 配置 svg-sprite-loader
// vue.config.js 文件
// 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()
  1. 使用
      
      

你可能感兴趣的:(vue-svg-icon)