1. 程式人生 > 程式設計 >淺析vue cli3 封裝Svgicon元件正確姿勢(推薦)

淺析vue cli3 封裝Svgicon元件正確姿勢(推薦)

vue cli3 手把手教學封裝Svgicon元件

第一步:在src檔案下新建一個放置svg檔案的資料夾

在這裡插入圖片描述

第二步:在components檔案下新建一個Svg元件

這是一個 資料夾 專門用來存放專案裡面需要使用的svg檔案,比如 a.svg b.svg …

在這裡插入圖片描述

svg元件原始碼

<template>
 <svg :class="svgClass" aria-hidden="true">
  <use :xlink:href="iconName"></use>
 </svg>
</template>

<script type="text/ecmascript-6">
/* icon元件實現自動引入 ../../Icons/svg 下面所有的圖示了
*之後我們就要使用到 webpack 的 require.context。
很多人對於 require.context可能比較陌生,
直白的解釋就是require.context("./test",false,/.test.js$/); 
這行程式碼就會去 test 資料夾(不包含子目錄)
下面的找所有檔名以 .test.js 結尾的檔案能被 require 的檔案。 
更直白的說就是 我們可以通過正則匹配引入相應的檔案模組*/
const requireAll = requireContext => requireContext.keys().map(requireContext)
const req = require.context('../../Icons/svg',/\.svg$/)
requireAll(req)
export default {
 name: 'Svgicon',props: {
  iconClass: {
   type: String,required: true
  },className: {
   type: String
  }
 },computed: {
  iconName () {
   return `#icon-${this.iconClass}`
  },svgClass () {
   if (this.className) {
    return 'svg-icon ' + this.className
   } else {
    return 'svg-icon'
   }
  }
 }
}
</script>

<style>
.svg-icon {
   width: 1em;
   height: 1em;
   vertical-align: -0.15em;
   fill: currentColor;
   overflow: hidden;
 }
</style>

第三步:配置vue.config.js

  • 需要的loader
  • npm i svg-sprite-loader -D
chainWebpack: config => {
  const svgRule = config.module.rule('svg')
  svgRule.uses.clear()
  svgRule
   .use('svg-sprite-loader')
   .loader('svg-sprite-loader')
   .options({
    symbolId: 'icon-[name]'
   })
}

以上就配置完畢

注:未註冊元件在人口檔案全域性註冊即可使用(main.js)

到此這篇關於淺析vue cli3 封裝Svgicon元件正確姿勢(推薦)的文章就介紹到這了,更多相關vue cli3 Svgicon元件內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!