vue项目使用svg图片(svg-sprite-loader以及vue2-svg-icon的使用)

一、使用svg的好处

未来必热:SVG Sprite技术介绍

第一种方式:

二、安装svg-sprite-loader

npm install svg-sprite-loader --save-dev

三、webpack 配置(build/webpack.base.conf.js)

vue项目使用svg图片(svg-sprite-loader以及vue2-svg-icon的使用)_第1张图片

{
        test: /\.svg$/,
        loader: 'svg-sprite-loader',
        include: [resolve('src/icons')],
        options: {
          symbolId: 'icon-[name]'//去掉svg这个图片加载不出来
        }
      },

      {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        //这个不处理svg图片,因为我们独立拆开让svg-sprite-loader来处理了
        exclude: [resolve('src/icons')],

        options: {
          limit: 10000,
          name: utils.assetsPath('img/[name].[hash:7].[ext]')
        }
      },

四、 创建svg的组件

vue项目使用svg图片(svg-sprite-loader以及vue2-svg-icon的使用)_第2张图片






 五、创建文件夹存放svg的图标,同时注册svg组件到vue里面(index.js)

vue项目使用svg图片(svg-sprite-loader以及vue2-svg-icon的使用)_第3张图片

单个使用如下:

import './assets/svg/target.svg';

嗯,就这样短短一行。xlink:href 中传入 svg ID 就好了,由于在上面的配置文件中我们直接使用文件名作为 symbol 的 ID,所以这里传入的 ID 即为你想显示的图标的 svg 文件名,记得加上 #。

所有svg文件自动导入

 index.js代码如下,自动导入 src/icons/svg/ 下的 svg 文件。

import Vue from 'vue'
import SvgIcon from '@/components/SvgIcon'// svg组件

// register globally
Vue.component('svg-icon', SvgIcon)

const req = require.context('./svg', false, /\.svg$/)
const requireAll = requireContext => requireContext.keys().map(requireContext)
requireAll(req)

六、在main.js中引入

import Vue from 'vue'
import App from './App'
import router from './router'
//引入整个icons,
import './icons'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: ''
})

七、在vue中使用







第二种方式:

一、安装vue2-svg-icon

npm install vue2-svg-icon --save-dev

二、引入main.js并注册组件

vue项目使用svg图片(svg-sprite-loader以及vue2-svg-icon的使用)_第4张图片

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
//import './icons/index.js'
//引入vue2-svg-icon并且注册组件
import Icon from 'vue2-svg-icon/Icon'
Vue.component('icon',Icon);

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: ''
})

三、新建存放svg图片的目录(这个包默认是从assets/svg下面找svg图片的,不要问我为什么)

vue项目使用svg图片(svg-sprite-loader以及vue2-svg-icon的使用)_第5张图片

四、vue页面使用svg组件

vue项目使用svg图片(svg-sprite-loader以及vue2-svg-icon的使用)_第6张图片

 

你可能感兴趣的:(webpack)