亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

vue項目中使用Svg的方法

2019-11-19 12:38:18
字體:
供稿:網(wǎng)友

github demo: github地址

閑聊背景

本文主要以 vue-cli3 搭建的項目為例,來聊一下如何在項目中更優(yōu)雅的使用 svg 。

眾所周知, vue-cli3 已經(jīng)推出很長一段時間了,大家可以感受一下 vue-cli3 帶來的零配置體驗(yàn)。But,也相應(yīng)帶來了一些弊端,就是如歸需要修改默認(rèn)的 loader 時,會比較麻煩。

們接下來主要使用的就是上文中提到的 svg 的 use ,先上一張 vue-cli3 搭建的項目的目錄,可以看到根目錄下只保留了 public/ 以及 src/ ,可以說非常干凈,大家可以自己創(chuàng)建一個。

在 src/components/ 下創(chuàng)建 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>

在 src/ 下創(chuàng)建一個 icons 目錄,目錄結(jié)構(gòu)如下:

svg 目錄主要用于存放 svg 文件,來看一下 index.js 的內(nèi)容,功能就是把組件注冊到全局,方便使用:

import Vue from 'vue'import SvgIcon from '@/components/SvgIcon' // svg組件// 注冊到全局Vue.component('svg-icon', SvgIcon)const requireAll = requireContext => requireContext.keys().map(requireContext)const req = require.context('./svg', false, //.svg$/)requireAll(req)

當(dāng)然,如果你有自己的想法或需求,可以單獨(dú)引入,無需非要注冊到全局。

在 main.js 中引入

這一步就沒什么好說的了,如果需要注冊到全局,需要在入口文件中引入。

好了,接下來是最重要的一步:

修改默認(rèn)的 loader :

大家可以去vue-cli3官網(wǎng)去查看具體教程,這里我只說需要修改的 loader 以及具體的代碼實(shí)現(xiàn)。

首先需要注意的是,通過 vue-cli3 構(gòu)建的項目可以初始化進(jìn)行很多選擇,我構(gòu)建的目錄更多的是以 *.config.js 的形式存在的。

在根目錄下創(chuàng)建一個名為 vue.config.js 文件,接下來的操作都和它有關(guān),先來看一下它完整的代碼:

const path = require('path')function resolve (dir) { return path.join(__dirname, './', dir)}module.exports = { chainWebpack: config => { config.plugin('define').tap(args => {  const argv = process.argv  const icourt = argv[argv.indexOf('--icourt-mode') + 1]  args[0]['process.env'].MODE = `"${icourt}"`  return args }) // svg rule loader const svgRule = config.module.rule('svg') // 找到svg-loader svgRule.uses.clear() // 清除已有的loader, 如果不這樣做會添加在此loader之后 svgRule.exclude.add(/node_modules/) // 正則匹配排除node_modules目錄 svgRule // 添加svg新的loader處理  .test(//.svg$/)  .use('svg-sprite-loader')  .loader('svg-sprite-loader')  .options({  symbolId: 'icon-[name]',  }) // 修改images loader 添加svg處理 const imagesRule = config.module.rule('images') imagesRule.exclude.add(resolve('src/icons')) config.module  .rule('images')  .test(//.(png|jpe?g|gif|svg)(/?.*)?$/) }, configureWebpack: { devServer: {  open: true,  // https: true,  proxy: {  '/user': {   target: 'https://devadminschool.icourt.cc',  },  '/live': {   target: 'https://devadminschool.icourt.cc',  },  }, }, },}

大家忽略無關(guān)緊要的代碼,重點(diǎn)從 svg rule loader 注釋開始,其實(shí)注釋已經(jīng)比較詳細(xì)了,就是獲取默認(rèn)的 loader 并進(jìn)行相關(guān)的修改,主要有 svg-loader 、 images-loader ,從 vue-cli3 基礎(chǔ)loader 中可以找到這兩個 loader 的默認(rèn)配置。

// 默認(rèn)的svg loader...webpackConfig.module .rule('svg') .test(//.(svg)(/?.*)?$/) .use('file-loader')  .loader('file-loader')  .options({  name: genAssetSubPath('img')  })  // 默認(rèn)的images loader...webpackConfig.module  .rule('images')  .test(//.(png|jpe?g|gif|webp)(/?.*)?$/)  .use('url-loader')   .loader('url-loader')   .options(genUrlLoaderOptions('img'))

對比我一開始的代碼可以看出,我把默認(rèn)的 svg loader 配置中使用的 file-loader 改為了 svg-sprite-loader ,并排除了 node_modules ,把默認(rèn)的 images-loader 配置添加了 svg ,并排除了 src/icons 目錄。

如何使用?

  • 可以把設(shè)計大大給的svg 或者從iconfont官網(wǎng)下載開源的icon的svg格式,復(fù)制到 src/icons/svg 目錄下;
  • 點(diǎn)擊 svg 查看源碼,修改 fill 屬性, fill="currentColor" ,或者 fill="" ,如果無此屬性,就不用管,這樣做是可以讓外部控制icon的顏色,或隨父元素的color;
  • 注意svg命名和SvgIcon命名一致,看一下最終使用:

這里就會使用 src/icons/svg/go-back.svg 文件。

總結(jié):

以上講的比較糙,奈何文字功底是硬傷,最后附上github demo 代碼示例:
此項目也可以當(dāng)做項目初始架構(gòu),內(nèi)置了vue-router、vuex等。
本文以vue-cli3創(chuàng)建的項目為例,之前的項目可以直接去手動修改對應(yīng)的loader即可。

github地址

總結(jié)

以上所述是小編給大家介紹的vue項目中使用Svg的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
欧亚乱熟女一区二区在线| 成人av一区| wwwxx欧美| 欧美一级夜夜爽| a天堂资源在线观看| 亚洲石原莉奈一区二区在线观看| 农民人伦一区二区三区| 欧美激情精品久久久久久变态| 国产精品久久久久久久久免费樱桃| 3d动漫一区二区三区在线观看| 日本在线观看免费视频| av成人老司机| 国产一级片视频| 樱桃视频成人在线观看| 日本成人在线免费视频| 精品久久久久久久久久久aⅴ| 又大又黄又粗| 亚洲 国产 日韩 欧美| 国产成人在线免费看| 日韩的一区二区| 中文字幕观看在线| 精品少妇一区二区三区免费观看| 高清毛片在线看| 色屁屁草草影院ccyycom| 一级视频在线观看视频在线啦啦| 成 年 人 黄 色 大 片大 全| 熟妇高潮精品一区二区三区| 国产人成免费视频| 免费一级欧美片在线播放| 男人和女人啪啪网站| 伊人成综合网yiren22| 超碰福利在线观看| 国内av免费| 亚州一区二区| 久久久久伊人| 欧美 亚洲 另类 激情 另类| 欧美日韩在线精品一区二区三区激情| 天天干在线影院| 欧美综合在线第二页| 自拍av一区二区三区| 欧美一区二区三区爱爱| 欧美大波大乳巨大乳| 最新欧美人z0oozo0| 国产日韩精品一区观看| 成年人视频免费看| 欧美性黄网官网| 国产欧美一区二区在线观看| 91在线观看网站| 91精品精品| 亚洲资源一区| 欧美中文在线免费| 姝姝窝人体www聚色窝| 高清电影一区| 亚洲色图另类图片| 日韩在线观看一区二区| 国产成人一区二区| 欧美激情精品久久久久久免费| 国产亚洲精品自在线观看| 秋霞国产午夜精品免费视频| 国产一区再线| 黄色免费网站在线观看| 成人欧美大片| 中文字幕精品一区二区三区精品| 日韩av自拍| 蜜桃麻豆www久久国产精品| 禁久久精品乱码| 丁香婷婷自拍| 91福利资源站| 久久久久久国产精品一区| 日韩高清一级片| 免费福利在线| 性欧美精品一区二区三区在线播放| 午夜精品一区二区三区四区| 天堂va久久久噜噜噜久久va| 日韩一区二区三区电影在线观看| 色呦呦网站在线观看| 伊人久久久久久久久久久久| 日韩欧美一区电影| 亚洲欧美高清| 手机看片福利永久国产日韩| 亚洲国产专区校园欧美| 国产精品十八以下禁看| 欧美日韩中文国产| 日韩在线视频免费播放| 欧美视频裸体精品| av片在线观看永久免费| 国产在线精品一区二区三区| 国产精品一区视频网站| 一本色道久久加勒比88综合| 欧美日韩a区| 国产精品女主播一区二区三区| 日韩高清一区二区| 欧美激情精品在线| 国产一区亚洲| 国产成人黄色网址| 91福利国产精品| 国产无遮挡又黄又爽又色| 欧美三级在线免费观看| 日本不卡视频在线观看| 91精品国产综合久久婷婷香蕉| 亚洲精品成人悠悠色影视| 中文在线字幕观看| 91精品国产综合久久精品app| 欧美日韩国产欧美日美国产精品| 国产一区二区三区无遮挡| 青青青免费视频在线2| 在线亚洲+欧美+日本专区| 天堂中文视频在线| 在线观看av网页| 91网址在线观看精品| 日韩视频中文字幕| 亚洲国产午夜精品| 九九热播视频在线精品6| 丰满熟妇乱又伦| 中文官网资源新版中文第二页在线观看| 国产精品嫩草久久久久| 美女视频一区| 国产精品免费人成网站| 久久精品男人的天堂| 亚洲欧美在线不卡| 国产女同性恋一区二区| 情趣网站视频在线观看| 欧美爱爱视频免费看| 波多视频一区| 四虎精品欧美一区二区免费| 免费视频一区二区三区在线观看| 免费男女羞羞的视频网站中文字幕| 国产精品乱码视频| 亚洲一区二区三| 岛国精品在线播放| 国产精品熟妇一区二区三区四区| 亚洲天堂av女优| 丁香婷婷自拍| 国产精品不卡一区二区三区| 国产高潮呻吟久久久| 久久av一区二区三区| 欧美被狂躁喷白浆精品| 成人免费网站在线| 欧美黑人巨大精品一区二区| 色综合天天综合网国产成人网| 日产亚洲一区二区三区| 久久免费精品日本久久中文字幕| 爱爱爱免费视频在线观看| 欧美日本中文字幕| 一区二区精品视频| 免费激情网址| 黄瓜视频污在线观看| 色啪免费观看视频| 中文字幕一区二区三区中文字幕| 成人免费视频视频在线观看免费| 九九九久久久久久| 最新中文字幕日本| 成人性生交大片免费看网站| 国产喷白浆一区二区三区| 日日橹狠狠爱欧美超碰| 日韩禁在线播放| 精品无人区一区二区三区| 日本在线啊啊| 国产又粗又大又爽的视频| 日日摸夜夜夜夜夜添| 色综合久久天天综线观看| 日韩精品一级毛片在线播放| 亚洲国产成人精品电影| 久久草在线看| 免费精品国产的网站免费观看| 丁香五月缴情综合网| 成人动漫一区二区在线| 亚洲天堂av资源在线观看| 国产二区一区| 欧美日韩国产综合视频在线观看中文| 中文字幕在线看视频国产欧美在线看完整| 国产91精品免费| 国产综合亚洲精品一区二| 成a人片在线观看www视频| 日韩av超清在线观看| 亚洲一二三区视频在线观看| 91禁外国网站| 中文字幕亚洲日本岛国片| 日韩一区二区免费电影| 佐山爱在线视频| 成人性视频网站| 中文无字幕一区二区三区| 国产真实乱子伦精品视频| 成人国产在线激情| 久操视频在线观看| 搡老岳熟女国产熟妇| 牛人盗摄一区二区三区视频| 警花av一区二区三区| 香蕉久久久久久av成人| 九九热在线视频观看这里只有精品| 国产日韩欧美在线| av中文字幕在线不卡| 日韩电影大全在线观看| 欧美人与牛zoz0性行为| 欧美日本高清| 妺妺窝人体色777777| 日产国产欧美视频一区精品| 国产精品欧美久久久久无广告| 波多结衣在线观看| 国产精品黄色影片导航在线观看| 99国产精品99久久久久久粉嫩| 精品国产99| 日本综合久久| 周于希免费高清在线观看| 欧美三级精品| 国产精品美女久久久久人| 亚洲www视频| 久久在线电影| 91精品国产91久久久久久最新| 中文字幕在线观看91| 国产精品一区二区av交换| 欧美日一区二区| 99精品人妻无码专区在线视频区| 日本三级2019| 国产欧美va欧美va香蕉在| 亚洲va天堂va国产va久| 美女视频网站久久| 亚洲天堂二区| 日本一级理论片在线大全| 久久一区二区精品| 天堂在线观看视频| 天天干 夜夜操| 日本大臀精品| 精品少妇人妻一区二区黑料社区| 男人天堂av在线播放| 成人性生交大片免费看96| 一区二区三区四区高清视频| 成人蜜臀av电影| 自由色视频.| 激情久久综合网| 亚洲电影在线播放| 欧美在线|欧美| 天堂社区在线视频| 亚洲国产第一| 日韩理论片在线| 国产区精品区| 黄色aaa级片| 先锋影音av中文资源| 欧美绝品在线观看成人午夜影视| 91精品久久久久久久久久另类| 亚洲激情视频网| 少妇av一区二区三区| 九九视频精品全部免费播放| 国产精品中文字幕在线| 久久免费看少妇高潮| 欧美不卡在线视频| 无码av免费一区二区三区试看| 中文字幕人妻一区二区三区在线视频| 久久精品久久久精品美女| av在线不卡免费看| 最近免费中文字幕在线第一页| 久久亚洲中文字幕无码| 国内自拍在线观看| 人人澡人人澡人人看| 国内精品久久影院| 成人三级视频在线观看一区二区| 狠狠躁狠狠躁视频专区| 中文字幕免费高清在线| 日本一区精品久久久久影院| 国产精品视频分类| 亚洲午夜精品久久久久久人妖| mm视频在线视频| sese在线播放| 欧美精品视频www在线观看| 美乳中文字幕| 成人亚洲性情网站www在线观看| 真人抽搐一进一出视频| 国产一区二区三区四区在线观看| 香蕉久久国产av一区二区| 亚洲成人生活片| 亚洲欧美日韩另类精品一区二区三区| 污污影院在线观看| 日本精品在线视频| 一二三四视频在线社区中文字幕2| 91精品久久久久久久久不口人| 亚洲高清在线视频| 一级全黄裸体免费视频| www视频在线观看免费| a视频在线观看免费| 国产一级在线播放| 中文字幕第8页| 欧美激情综合五月色丁香| 一级黄色片视频| 九九热精品在线| 精品欧美一区二区三区在线观看| 日韩的一区二区| 中文在线字幕在线观看| 免费在线观看av网站| 大菠萝精品导航| 精品人妻一区二区色欲产成人| 欧美日韩国产精品一区二区| 久草电影在线| 91视频免费看片| 这里只有精品66| 欧美美女性生活视频| 波多野结衣视频网址| 国产成人久久精品一区二区三区| 亚洲丝袜精品| 亚洲一区二区三区xxx视频| 99视频+国产日韩欧美| 日韩午夜免费视频| 欧美中文字幕在线观看| 亚洲日本精品国产第一区| 人人插人人射| 日韩欧美国产成人一区二区| 超级砰砰砰97免费观看最新一期| 欧美日韩精品在线| 欧美精品少妇| 在线成人免费网站| 国产二区国产一区在线观看| 日本一二区免费| 逼特逼视频在线| 99久久婷婷国产| 亚洲欧美日韩国产精品| 7799精品视频天天看| 91婷婷韩国欧美一区二区| 日韩欧美在线播放视频| 懂色av一区二区三区在线播放| 久草视频国产在线| 欧美日韩在线观看免费| 亚洲天堂日韩在线| 2020日本在线视频中文字幕| 欧美另类交视频| 天天插天天射天天干| 久久视频在线看| 亚洲视频免费在线观看| 99精品国产99久久久久久白柏| 久久久久久久久久成人|