欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

搭建環(huán)境

這里通過(guò)@vue/cli 4.5.13新建項(xiàng)目,并且需要安裝依賴svg-sprite-loader,用來(lái)處理對(duì)應(yīng)的svg圖標(biāo),方便我們使用。

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

配置vue.config.js

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

// 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]'
      })
  }
}

這里通過(guò)chainWebpack來(lái)做了兩項(xiàng)配置:

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

新建圖標(biāo)組件

在components目錄下新建一個(gè)SvgIcon.vue文件:

<template>
  <i class="icon">
    <!-- aria-hidden, 幫助殘障人士閱讀(設(shè)備讀取內(nèi)容時(shí)會(huì)跳過(guò)這個(gè)標(biāo)簽以免混淆) -->
    <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>

然后,新建一個(gè)icons目錄,并且新建一個(gè)index文件,用來(lái)掛在組件和引入svg圖標(biāo):

// 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')

這個(gè)文件做了兩件事:

  1. 通過(guò)導(dǎo)出一個(gè)方法來(lái)掛載全局組件svg-icon;
  2. 通過(guò)require.context來(lái)實(shí)現(xiàn)自動(dòng)化引入svg目錄下的圖標(biāo)文件。

使用組件

首先,我們要在icons/svg目錄下存放svg圖標(biāo)文件(在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>

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

總結(jié)

這種自定義方式引入svg圖標(biāo)的方式,還是挺方便的,想要加上一個(gè)圖標(biāo)的時(shí)候,幾步即可:

  1. 直接下載好svg文件放入對(duì)應(yīng)目錄中;
  2. 接著通過(guò)svg-icon組件來(lái)引入。

但是,修改樣式時(shí)不能通過(guò)css來(lái)修改,這點(diǎn)就不太方便了。

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

相關(guān)文章

  • 在vue中使用screenfull?依賴,實(shí)現(xiàn)全屏組件方式

    在vue中使用screenfull?依賴,實(shí)現(xiàn)全屏組件方式

    這篇文章主要介紹了在vue中使用screenfull?依賴,實(shí)現(xiàn)全屏組件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 代理模式在vue中的使用示例解析

    代理模式在vue中的使用示例解析

    這篇文章主要為大家介紹了代理模式在vue中的使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Vue.js第一天學(xué)習(xí)筆記(數(shù)據(jù)的雙向綁定、常用指令)

    Vue.js第一天學(xué)習(xí)筆記(數(shù)據(jù)的雙向綁定、常用指令)

    這篇文章主要為大家分享了Vue.js第一天的學(xué)習(xí)筆記,包括數(shù)據(jù)的雙向綁定、常用指令學(xué)習(xí),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • vue前端獲取不同客戶端mac地址最詳細(xì)步驟(避免踩坑)

    vue前端獲取不同客戶端mac地址最詳細(xì)步驟(避免踩坑)

    在開發(fā)過(guò)程中,綁定賬號(hào)和電腦的功能可以通過(guò)獲取電腦的MAC地址實(shí)現(xiàn),下面這篇文章主要介紹了vue前端獲取不同客戶端mac地址的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • 詳解vue-element Tree樹形控件填坑路

    詳解vue-element Tree樹形控件填坑路

    這篇文章主要介紹了vue-element Tree樹形控件填坑路,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • element表格去掉表頭的實(shí)現(xiàn)方法

    element表格去掉表頭的實(shí)現(xiàn)方法

    本文主要介紹了element表格去掉表頭的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 用vue-cli開發(fā)vue時(shí)的代理設(shè)置方法

    用vue-cli開發(fā)vue時(shí)的代理設(shè)置方法

    今天小編就為大家分享一篇用vue-cli開發(fā)vue時(shí)的代理設(shè)置方法,具有很好的參考價(jià)值。希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • ElementUI之表格toggleRowSelection選中踩坑記錄

    ElementUI之表格toggleRowSelection選中踩坑記錄

    這篇文章主要介紹了ElementUI之表格toggleRowSelection選中踩坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue.js+element-ui的基礎(chǔ)表單實(shí)例代碼

    vue.js+element-ui的基礎(chǔ)表單實(shí)例代碼

    這篇文章主要介紹了vue.js+element-ui的基礎(chǔ)表單實(shí)例代碼,技術(shù)棧即html+vue.js+element-ui,而使用它們的方法也很簡(jiǎn)單,引入對(duì)應(yīng)的js和css文件即可,需要的朋友可以參考下
    2024-03-03
  • Vue中@keyup.enter?@v-model.trim的用法小結(jié)

    Vue中@keyup.enter?@v-model.trim的用法小結(jié)

    這篇文章主要介紹了Vue中@keyup.enter?@v-model.trim的用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-12-12

最新評(píng)論