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

VUE-cli3使用 svg-sprite-loader

 更新時(shí)間:2018年10月20日 08:43:01   作者:litongqian  
svg-sprite-loader 的插件,用來根據(jù)導(dǎo)入的 svg 文件自動(dòng)生成 symbol 標(biāo)簽并插入 html,這篇文章主要介紹了VUE-cli3使用 svg-sprite-loader,需要的朋友可以參考下

VUE-cli3使用 svg-sprite-loader

svg-sprite-loader 的插件,用來根據(jù)導(dǎo)入的 svg 文件自動(dòng)生成 symbol 標(biāo)簽并插入 html,接下來就可以在模版中方便地使用 svg-sprite 技術(shù)了。

使用 svg-sprite 的好處

  • 頁面代碼清爽
  • 可使用 ID 隨處重復(fù)調(diào)用
  • 每個(gè) SVG 圖標(biāo)都可以更改大小顏色

安裝插件

npm install svg-sprite-loader --save-dev

webpack 配置,在Vue.config.js加入處理 svg 的 loader:

const path = require('path')
function resolve(dir) {
 return path.join(__dirname, '.', dir)
}
module.exports = {
 chainWebpack: config => {
  config.module.rules.delete("svg"); //重點(diǎn):刪除默認(rèn)配置中處理svg,
  //const svgRule = config.module.rule('svg')
  //svgRule.uses.clear()
  config.module
   .rule('svg-sprite-loader')
   .test(/\.svg$/)
   .include
   .add(resolve('src/icons')) //處理svg目錄
   .end()
   .use('svg-sprite-loader')
   .loader('svg-sprite-loader')
   .options({
    symbolId: 'icon-[name]'
   })
 },
 configureWebpack: () => ({
  // resolve: {
  //  alias: require('./alias.config').webpack
  // }
  // module: {
  //  rules: [{
  //   test: /\.svg$/,
  //   use: [{
  //    loader: "svg-sprite-loader",
  //    options: {
  //     symbolId: 'icon-[name]'
  //    }
  //   }]
  //  }]
  // }
 })
}

這時(shí)候發(fā)現(xiàn)還是不行啊, body 中并沒有看到 symbol 標(biāo)簽。

就是說只有我們自己引入的 svg 文件需要經(jīng)過 svg-sprite-loader,那么就將這些 svg 統(tǒng)一放到一個(gè)目錄下,我這里放到了 src/icons

然后要在用到的地方引入需要的svg

import './src/icon/target.svg';

重新啟動(dòng)項(xiàng)目,終于在 html 中看到了 symbol 標(biāo)簽!

配置好了,就可以用了。使用方法很簡單,相較于原來插入 svg 圖標(biāo)的方法(img src 或?qū)?svg 整個(gè)寫入 html),用 svg-sprite 更加簡單且清爽:

<svg><use xlink:href="#target" /></svg>

嗯,就這樣短短一行。 xlink:href 中傳入 svg ID 就好了,由于在上面的配置文件中我們直接使用文件名作為 symbol 的 ID,所以這里傳入的 ID 即為你想顯示的圖標(biāo)的 svg 文件名,記得加上 # 。

自動(dòng)導(dǎo)入

你會發(fā)現(xiàn),這里要想插入某個(gè)圖標(biāo),都得 import ,每用一個(gè)都要重復(fù)一遍這個(gè)流程,太麻煩,那么我們就讓 src/icons/svg/下的 svg 文件都自動(dòng)導(dǎo)入吧。

webpack 可以幫我們做到:

// requires and returns all modules that match
const requireAll = requireContext => requireContext.keys().map(requireContext);
// import all svg
const req = require.context('./assets/svg', true, /\.svg$/);
requireAll(req);

代碼實(shí)例:

首先在main.ts中引入import './icons/index',

icons/index.js,將icons/svg中的所有svg導(dǎo)入并注冊全局組件SvgIcon

//SvgIcon組件代碼

<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 scoped>
.svg-icon {
 width: 1em;
 height: 1em;
 vertical-align: -0.15em;
 fill: currentColor;
 overflow: hidden;
}
</style>

接下來就可以使用組建了

關(guān)于 require.context 的詳細(xì)用法,可以參考 webpack 文檔:dynamic requires

這樣一來,每當(dāng)我們修改或增加新的 svg,只要將文件往這個(gè)目錄下一扔,插件就會自動(dòng)幫我們生成相應(yīng)的 symbol 標(biāo)簽啦,接下來就只管用吧

相關(guān)文章

  • Vue3使用vue-qrcode-reader實(shí)現(xiàn)掃碼綁定設(shè)備功能(推薦)

    Vue3使用vue-qrcode-reader實(shí)現(xiàn)掃碼綁定設(shè)備功能(推薦)

    本文介紹了在Vue3中使用vue-qrcode-reader版本5.5.7來實(shí)現(xiàn)移動(dòng)端的掃碼綁定設(shè)備功能,用戶通過掃描二維碼自動(dòng)獲取設(shè)備序列號,并填充到添加設(shè)備界面,完成設(shè)備綁定的全過程,包含ScanCode.vue和DeviceAdd.vue兩個(gè)主要界面的實(shí)現(xiàn)方式
    2024-10-10
  • vue從使用到源碼實(shí)現(xiàn)教程詳解

    vue從使用到源碼實(shí)現(xiàn)教程詳解

    這篇文章主要介紹了vue從使用到源碼實(shí)現(xiàn)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • van-dialog彈窗異步關(guān)閉功能-校驗(yàn)表單實(shí)現(xiàn)

    van-dialog彈窗異步關(guān)閉功能-校驗(yàn)表單實(shí)現(xiàn)

    有時(shí)候我們需要通過彈窗去處理表單數(shù)據(jù),在原生微信小程序配合vant組件中有多種方式實(shí)現(xiàn),其中UI美觀度最高的就是通過van-dialog嵌套表單實(shí)現(xiàn),這篇文章主要介紹了van-dialog彈窗異步關(guān)閉-校驗(yàn)表單,需要的朋友可以參考下
    2023-11-11
  • Vue中實(shí)現(xiàn)在線畫流程圖的方法

    Vue中實(shí)現(xiàn)在線畫流程圖的方法

    最近在調(diào)研一些在線文檔的實(shí)現(xiàn),包括文檔編輯器、在線思維導(dǎo)圖、在線流程圖等,本文分享在Vue框架下基于metaeditor-mxgraph實(shí)現(xiàn)在線流程圖,感興趣的朋友一起看看吧
    2024-07-07
  • vue+element-ui+axios實(shí)現(xiàn)圖片上傳

    vue+element-ui+axios實(shí)現(xiàn)圖片上傳

    這篇文章主要為大家詳細(xì)介紹了vue+element-ui+axios實(shí)現(xiàn)圖片上傳,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • vue二級路由設(shè)置方法

    vue二級路由設(shè)置方法

    下面小編就為大家分享一篇vue二級路由設(shè)置方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • 關(guān)于vue-socket.io使用及版本原因消息無法監(jiān)聽bug

    關(guān)于vue-socket.io使用及版本原因消息無法監(jiān)聽bug

    這篇文章主要介紹了關(guān)于vue-socket.io使用及版本原因消息無法監(jiān)聽bug,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue微信分享插件使用方法詳解

    vue微信分享插件使用方法詳解

    這篇文章主要介為大家詳細(xì)紹了vue微信分享插件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Vue Router4 嵌套路由的示例代碼

    Vue Router4 嵌套路由的示例代碼

    在 Vue Router 4 中,嵌套路由是一種非常重要的功能,它允許我們創(chuàng)建更復(fù)雜的 UI 結(jié)構(gòu),同時(shí)保持路由的清晰和易于管理,這篇文章主要介紹了Vue Router4 嵌套路由,需要的朋友可以參考下
    2024-04-04
  • vue?filters和directives訪問this的問題詳解

    vue?filters和directives訪問this的問題詳解

    這篇文章主要介紹了vue?filters和directives訪問this的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評論