最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Vue實現(xiàn)自定義組件的方式引入圖標

 更新時間:2021年07月14日 12:06:40   作者:可樂愛宅著  
在vue項目中我們經常遇到圖標,下面這篇文章主要給大家介紹了關于如何基于Vue實現(xiàn)自定義組件的方式引入圖標的相關資料,文章通過示例代碼介紹的非常詳細,需要的朋友可以參考下

前言

在項目開發(fā)中,使用圖標的方式有很多種,可以在iconfont上面找到合適的圖標,通過http或者直接下載使用,這里我分享一種通過實現(xiàn)自定義組件的方式引入圖標。

搭建環(huán)境

這里通過@vue/cli 4.5.13新建項目,并且需要安裝依賴svg-sprite-loader,用來處理對應的svg圖標,方便我們使用。

安裝: npm install --save-dev svg-sprite-loader

配置vue.config.js

在安裝svg-sprite-loader后,新建vue.config.js來配置依賴:

// vue.config.js
const { resolve } = require('path')

module.exports = {
  chainWebpack(config) {
    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]'
      })
  }
}

這里通過chainWebpack來做了兩項配置:

  • 第一個是讓原來的其他處理svg的依賴不處理src/icons下我們的自定義圖標文件
  • 通過svg-sprite-loader來處理自定義的圖標文件,options里面的設置表示,生成的svg的symbolId為icon和文件名的拼接。

新建圖標組件

在components目錄下新建一個SvgIcon.vue文件:

<template>
  <i class="icon">
    <!-- aria-hidden, 幫助殘障人士閱讀(設備讀取內容時會跳過這個標簽以免混淆) -->
    <svg aria-hidden="true" :width="size" :height="size" :fill="fillColor">
      <use :xlink:href="iconName" rel="external nofollow" ></use>
    </svg>
  </i>
</template>

<script lang="ts">
import { PropType, toRefs } from 'vue'

export default {
  props: {
    size: {
      type: Number as PropType<number>,
      default: 14
    },
    fillColor: {
      type: String as PropType<string>,
      default: '#000'
    },
    iconName: {
      type: String as PropType<string>,
      required: true
    }
  },
  setup(props: any) {
    const { size, fillColor, iconName: _iconName } = toRefs(props)
    const iconName = `#${_iconName.value}`

    return {
      size,
      fillColor,
      iconName
    }
  }
}
</script>

然后,新建一個icons目錄,并且新建一個index文件,用來掛在組件和引入svg圖標:

// index.ts
import SvgIcon from '@/components/SvgIcon.vue'
import { App } from 'vue'

export default (app: App) => {
  app.component('svg-icon', SvgIcon)
}

const ctx = require.context('./svg', false, /\.svg$/)
const requestAll = (ctx: __WebpackModuleApi.RequireContext) => ctx.keys().forEach(ctx)

requestAll(ctx)
// main.ts
import { createApp } from 'vue'
import App from './App.vue'
import installSvgIcon from '@/icons/index'

const app = createApp(App)

installSvgIcon(app)
app.mount('#app')

這個文件做了兩件事:

  1. 通過導出一個方法來掛載全局組件svg-icon;
  2. 通過require.context來實現(xiàn)自動化引入svg目錄下的圖標文件。

使用組件

首先,我們要在icons/svg目錄下存放svg圖標文件(在iconfont上找自己需要的);

然后,就可以在其他地方使用啦:

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <svg-icon icon-name="icon-dashboard"></svg-icon>
  <HelloWorld msg="Welcome to Your Vue.js + TypeScript App"/>
</template>

直接通過組件svg-icon的方式引入,然后傳入icon-name即可,icon-name的值由icon拼接svg文件名組成。

總結

這種自定義方式引入svg圖標的方式,還是挺方便的,想要加上一個圖標的時候,幾步即可:

  1. 直接下載好svg文件放入對應目錄中;
  2. 接著通過svg-icon組件來引入。

但是,修改樣式時不能通過css來修改,這點就不太方便了。

到此這篇基于Vue實現(xiàn)自定義組件的方式引入圖標的文章就介紹到這了,更多相關Vue自定義的圖標組件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Element?Plus組件Form表單Table表格二次封裝的完整過程

    Element?Plus組件Form表單Table表格二次封裝的完整過程

    一般在后臺管理系統(tǒng)的開發(fā)中,都會遇到很多table,但每一次都去引入el-table就會導致代碼十分冗余,所以基于組件做一下二次封裝成自己需要的組件就十分nice,下面這篇文章主要給大家介紹了關于Element?Plus組件Form表單Table表格二次封裝的相關資料,需要的朋友可以參考下
    2022-09-09
  • Vue異步更新機制及$nextTick原理的深入講解

    Vue異步更新機制及$nextTick原理的深入講解

    最近在學習一些底層方面的知識,所以想做個系列嘗試去聊聊這些比較復雜又很重要的知識點,下面這篇文章主要給大家介紹了關于Vue異步更新機制及$nextTick原理的相關資料,需要的朋友可以參考下
    2022-04-04
  • Vue實現(xiàn)快捷鍵錄入功能的示例代碼

    Vue實現(xiàn)快捷鍵錄入功能的示例代碼

    有的時候項目需要在頁面使用快捷鍵,而且需要對快捷鍵進行維護。本文將為大家展示Vue實現(xiàn)快捷鍵錄入功能的示例代碼,感興趣的可以了解一下
    2022-04-04
  • 基于Vue的商品主圖放大鏡方案詳解

    基于Vue的商品主圖放大鏡方案詳解

    這篇文章主要介紹了基于 Vue 的商品主圖放大鏡方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • 解決找不到模塊“xxx.vue”或其相應的類型聲明問題

    解決找不到模塊“xxx.vue”或其相應的類型聲明問題

    這篇文章主要介紹了解決找不到模塊“xxx.vue”或其相應的類型聲明問題,具有很好的參考價值,希望對大家有所幫助。
    2022-10-10
  • elementUI多選框反選的實現(xiàn)代碼

    elementUI多選框反選的實現(xiàn)代碼

    這篇文章主要介紹了elementUI多選框反選的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • vue實現(xiàn)登錄后頁面跳轉到之前頁面

    vue實現(xiàn)登錄后頁面跳轉到之前頁面

    本文給大家分享了vue實現(xiàn)登錄后頁面跳轉到之前頁面的一個功能,有這方便需要的朋友學習參考下吧。
    2018-01-01
  • Vue-不允許嵌套式的渲染方法

    Vue-不允許嵌套式的渲染方法

    今天小編就為大家分享一篇Vue-不允許嵌套式的渲染方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 詳解Element-ui NavMenu子菜單使用遞歸生成時使用報錯

    詳解Element-ui NavMenu子菜單使用遞歸生成時使用報錯

    這篇文章主要介紹了詳解Element-ui NavMenu子菜單使用遞歸生成時使用報錯,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • 基于Vue SEO的四種方案(小結)

    基于Vue SEO的四種方案(小結)

    這篇文章主要介紹了基于Vue SEO的四種方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07

最新評論

潼关县| 石城县| 汝南县| 吉木乃县| 合江县| 竹北市| 交口县| 上蔡县| 淄博市| 黄石市| 高唐县| 吉安县| 宁都县| 宿州市| 吴江市| 延吉市| 自贡市| 谷城县| 宁都县| 侯马市| 文山县| 嘉祥县| 柯坪县| 南宁市| 定安县| 泰顺县| 聂荣县| 昌吉市| 五指山市| 南康市| 盐边县| 孝义市| 天气| 紫阳县| 金堂县| 天长市| 延川县| 新乐市| 泗洪县| 佛冈县| 子洲县|