浅析vue cli3 封装Svgicon组件正确姿势(推荐)


Posted in Javascript onApril 27, 2020

vue cli3 手把手教学封装Svgicon组件

第一步:在src文件下新建一个放置svg文件的文件夹

浅析vue cli3 封装Svgicon组件正确姿势(推荐)

第二步:在components文件下新建一个Svg组件

这是一个 文件夹 专门用来存放项目里面需要使用的svg文件,比如 a.svg b.svg …

浅析vue cli3 封装Svgicon组件正确姿势(推荐)

svg组件源码

<template>
 <svg :class="svgClass" aria-hidden="true">
  <use :xlink:href="iconName"></use>
 </svg>
</template>

<script type="text/ecmascript-6">
/* icon组件实现自动引入 ../../Icons/svg 下面所有的图标了
*之后我们就要使用到 webpack 的 require.context。
很多人对于 require.context可能比较陌生,
直白的解释就是require.context("./test", false, /.test.js$/); 
这行代码就会去 test 文件夹(不包含子目录)
下面的找所有文件名以 .test.js 结尾的文件能被 require 的文件。 
更直白的说就是 我们可以通过正则匹配引入相应的文件模块*/
const requireAll = requireContext => requireContext.keys().map(requireContext)
const req = require.context('../../Icons/svg', false, /\.svg$/)
requireAll(req)
export default {
 name: 'Svgicon',
 props: {
  iconClass: {
   type: String,
   required: true
  },
  className: {
   type: String
  }
 },
 computed: {
  iconName () {
   return `#icon-${this.iconClass}`
  },
  svgClass () {
   if (this.className) {
    return 'svg-icon ' + this.className
   } else {
    return 'svg-icon'
   }
  }
 }
}
</script>

<style>
.svg-icon {
   width: 1em;
   height: 1em;
   vertical-align: -0.15em;
   fill: currentColor;
   overflow: hidden;
 }
</style>

第三步:配置vue.config.js

  • 需要的loader
  • npm i svg-sprite-loader -D
chainWebpack: config => {
  const svgRule = config.module.rule('svg')
  svgRule.uses.clear()
  svgRule
   .use('svg-sprite-loader')
   .loader('svg-sprite-loader')
   .options({
    symbolId: 'icon-[name]'
   })
}

 以上就配置完毕

注:未注册组件在人口文件全局注册即可使用(main.js)

到此这篇关于浅析vue cli3 封装Svgicon组件正确姿势(推荐)的文章就介绍到这了,更多相关vue cli3 Svgicon组件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
向左滚动文字 js代码效果
Aug 17 Javascript
js和php如何获取当前url的内容
Sep 22 Javascript
js使用数组判断提交数据是否存在相同数据
Nov 27 Javascript
BootStrap轮播HTML代码(推荐)
Dec 10 Javascript
jQuery Plupload上传插件的使用
Apr 19 jQuery
浅谈vue的踩坑路
Aug 31 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
Jul 13 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
Jul 24 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
Feb 02 Javascript
浅谈react-router@4.0 使用方法和源码分析
Jun 04 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
Oct 16 Javascript
JavaScript事件委托实现原理及优点进行
Aug 29 Javascript
react组件基本用法示例小结
Apr 27 #Javascript
react基本安装与测试示例
Apr 27 #Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
Apr 27 #Javascript
JS浏览器BOM常见操作实例详解
Apr 27 #Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
Apr 27 #Javascript
js HTML DOM EventListener功能与用法实例分析
Apr 27 #Javascript
JS严格模式原理与用法实例分析
Apr 27 #Javascript
You might like
福利彩票幸运号码自动生成器
2006/10/09 PHP
浅谈php调用python文件
2019/03/29 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
python实现简单点对点(p2p)聊天
2017/09/13 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
python实现低通滤波器代码
2020/02/26 Python
python实现扫雷小游戏
2020/04/24 Python
python中元组的用法整理
2020/06/15 Python
Python 实现集合Set的示例
2020/12/21 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
python3判断IP地址的方法
2021/03/04 Python
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
饲料采购员岗位职责
2013/12/19 职场文书
外贸英语专业求职信范文
2013/12/25 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
体育口号大全
2014/06/18 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
2014年学校教学工作总结
2014/12/06 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
检讨书模板大全
2015/05/07 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
python开发的自动化运维工具ansible详解
2021/08/07 Python
MySQL transaction事务安全示例讲解
2022/06/21 MySQL