vue-cli3使用svg

来源:https://www.cnblogs.com/Tianbao/archive/2019/11/07/11817071.html
-Advertisement-
Play Games

執行命令安裝插件 在 中,添加配置 module.exports = { ... chainWebpack: config = { // 一個規則里的 基礎Loader // svg是個基礎loader const svgRule = config.module.rule("svg"); // 清除 ...


  • 執行命令安裝插件 npm install svg-sprite-loader --save-dev
  • vue.config.js中,添加配置

      module.exports = {
          ...
          chainWebpack: config => {
              // 一個規則里的 基礎Loader
              // svg是個基礎loader
              const svgRule = config.module.rule("svg");
    
              // 清除已有的所有 loader。
              // 如果你不這樣做,接下來的 loader 會附加在該規則現有的 loader 之後。
              svgRule.uses.clear();
    
              // 添加要替換的 loader
              svgRule
              .use("svg-sprite-loader")
              .loader("svg-sprite-loader")
              .options({
                  symbolId: "icon-[name]"
              });
          },
          ...
      }
  • 創建vue公共svg組件svgIcon.vue

      <template>
      <svg :class="svgClass" aria-hidden="true">
          <use :xlink:href="iconName" />
      </svg>
      </template>
      <script>
      export default {
      name: "svgIcon",
    
      props: {
          iconClass: {
              type: String,
              required: true,
          },
          className: {
              type: String,
              default: '',
          },
      },
    
      computed: {
          iconName () {
              return    `#icon-${this.iconClass}`
          },
          svgClass () {
              if(this.className) {
                  return `svg-icon${this.className}`
              }else {
                  return 'svg-icon'
              }
          },
      },
      }
      </script>
      <style lang="scss" scoped>
      .svg-icon {
          width: 1em;
          height: 1em;
          vertical-align: -0.15em;
          fill: currentColor;
          overflow: hidden;
      }
      </style>
  • 新建svg-icon文件夾,文件夾下包含svgindex.js,分別為svg原文件和引入代碼。index.js內容為:

      import Vue from 'vue'
      import svgIcon from '@/components/svgIcon'
    
      Vue.component('svg-icon', svgIcon)   // 掛載在全局
    
      const requireAll = requireContext => requireContext.keys().map(requireContext)
      const req = require.context('./svg', false, /\.svg$/)
      requireAll(req);
  • 使用 <svg-icon icon-class="svgname" /> // svgname必須與/svg-icon/svg/下的svg文件命名一致。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本次遇到的問題描述,日誌採集同步時,當單條日誌(日誌文件中一行日誌)超過2M大小,數據無法採集同步到kafka,分析後,共踩到如下幾個坑。1、flume採集時,通過shell+EXEC(tail -F xxx.log 的方式) source來獲取日誌時,當單條日誌過大超過1M時,source端無法從 ...
  • 備份資料庫 創建備份目錄(用sys賬號),若已創建備份目錄,此步可忽略 create directory db_bak as 'D:\ ECIMS_DB' --查看創建的目錄 select * from dba_directories --刪除已創建的目錄 drop directory DB_BAK ...
  • 本文章轉載自:https://www.cnblogs.com/coprince/p/7485968.html 原文如下: 問題描述:從新浪微博抓取消息保存到MySQL數據中,對應資料庫欄位為varchar,字元編碼utf-8。部分插入成功,部分插入失敗,報錯如標題。 在網上查詢,有人說是編碼問題,建 ...
  • 1.什麼是InfluxDB? "InfluxDB" 是一個用Go語言開發的時序資料庫,用於處理高寫入和查詢負載,專門為帶時間戳的數據編寫,對DevOps監控,IoT監控和實時分析等應用場景非常有用。通過自定義配置讓InfluxDB保留規定時間內的數據,並自動從系統中刪除不在規定時間內的數據,可以節省 ...
  • 1.什麼是Telegraf? Telegraf是一個用Go語言開發的代理程式,可用於收集和報告指標。Telegraf插件直接從其運行的系統中獲取各種指標,從第三方API中提取指標,甚至通過StatsD和Kafka消費者服務來監聽指標。它還具有輸出插件,可以將指標發送到各種其他數據存儲,服務和消息隊列 ...
  • 1、redis連接、及存取值 import redis r = redis.Redis(host='192.168.2.22',port=6379,db=2,password= 'redis') r.set('name','Delia') # 在redis裡面放置對應的key,value v = r ...
  • elastic search 集群新增node 同一臺物理機 ...
  • 一、清除浮動的方式一 給前面一個父元素設置高度,​註意:企業開發中能不寫高度就不寫高度 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>D131_ClearFloat</title> <style> .sma ...
一周排行
    -Advertisement-
    Play Games
  • 概述:本文代碼示例演示瞭如何在WPF中使用LiveCharts庫創建動態條形圖。通過創建數據模型、ViewModel和在XAML中使用`CartesianChart`控制項,你可以輕鬆實現圖表的數據綁定和動態更新。我將通過清晰的步驟指南包括詳細的中文註釋,幫助你快速理解並應用這一功能。 先上效果: 在 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • 概述:本示例演示了在WPF應用程式中實現多語言支持的詳細步驟。通過資源字典和數據綁定,以及使用語言管理器類,應用程式能夠在運行時動態切換語言。這種方法使得多語言支持更加靈活,便於維護,同時提供清晰的代碼結構。 在WPF中實現多語言的一種常見方法是使用資源字典和數據綁定。以下是一個詳細的步驟和示例源代 ...
  • 描述(做一個簡單的記錄): 事件(event)的本質是一個委托;(聲明一個事件: public event TestDelegate eventTest;) 委托(delegate)可以理解為一個符合某種簽名的方法類型;比如:TestDelegate委托的返回數據類型為string,參數為 int和 ...
  • 1、AOT適合場景 Aot適合工具類型的項目使用,優點禁止反編 ,第一次啟動快,業務型項目或者反射多的項目不適合用AOT AOT更新記錄: 實實在在經過實踐的AOT ORM 5.1.4.117 +支持AOT 5.1.4.123 +支持CodeFirst和非同步方法 5.1.4.129-preview1 ...
  • 總說周知,UWP 是運行在沙盒裡面的,所有許可權都有嚴格限制,和沙盒外交互也需要特殊的通道,所以從根本杜絕了 UWP 毒瘤的存在。但是實際上 UWP 只是一個應用模型,本身是沒有什麼許可權管理的,許可權管理全靠 App Container 沙盒控制,如果我們脫離了這個沙盒,UWP 就會放飛自我了。那麼有沒... ...
  • 目錄條款17:讓介面容易被正確使用,不易被誤用(Make interfaces easy to use correctly and hard to use incorrectly)限制類型和值規定能做和不能做的事提供行為一致的介面條款19:設計class猶如設計type(Treat class de ...
  • title: 從零開始:Django項目的創建與配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 後端開發 tags: Django WebDev Python ORM Security Deployment Op ...
  • 1、BOM對象 BOM:Broswer object model,即瀏覽器提供我們開發者在javascript用於操作瀏覽器的對象。 1.1、window對象 視窗方法 // BOM Browser object model 瀏覽器對象模型 // js中最大的一個對象.整個瀏覽器視窗出現的所有東西都 ...