vue使用字體圖標svg,在src下新建目錄icons文件,再在icons文件下新建svg文件,在阿里ico中將字體的svg圖片下載下來便可:例如from.svgvue
在組件中新建icon-svg.vue組件webpack
<template> <svg class="svg-icon" aria-hidden="true"> <use :xlink:href="iconName"></use> </svg> </template> <script> export default { name: 'icon-svg', props: { iconClass: { type: String, required: true } }, computed: { iconName() { return `#icon-${this.iconClass}` } } } </script> <style scoped lang="stylus"> .svg-icon { width 1.1em height 1.1em vertical-align -.2em fill currentColor overflow hidden } </style>
在iicon的js中使用該組件icon-svg.vue組件web
import Vue from 'vue' import IconSvg from '@/components/icon-svg' /* require.context("./test", false, /.test.js$/);這行代碼就會去 test 文件夾(不包含子目錄) 下面的找全部文件名以 .test.js 結尾的文件能被 require 的文件。更直白的說就是 咱們能夠經過正則匹配引入相應的文件模塊。 require.context有三個參數: directory:說明須要檢索的目錄 useSubdirectories:是否檢索子目錄 regExp: 匹配文件的正則表達式 */ //全局註冊iconsvg組件 Vue.component('svg-icon', IconSvg) const requireAll = requireContext => requireContext.keys().map(requireContext) const req = require.context('./svg', false, /\.svg$/) requireAll(req)
main.js引入全局圖標(後面的index.js能夠省略)正則表達式
// 全局圖標 import './icons/index.js'
全局組件使用方式npm
<svg-icon icon-class="form"></svg-icon>
SVG安裝svg
npm i svg-sprite-loader --save
配置相關信息 在build/webpack.base.conf.js文件中,加入學習
{ test: /\.svg$/, loader: 'svg-sprite-loader', include: [resolve('src/icons')], options: { symbolId: 'icon-[name]' } }, exclude: [resolve('src/icons')],