浅析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实现网站首页图片滚动显示
Feb 04 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
Oct 17 Javascript
js判断某个字符出现的次数的简单实例
Jun 03 Javascript
ReactJs快速入门教程(精华版)
Nov 28 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
Feb 14 Javascript
JS检测window.open打开的窗口是否关闭
Jun 25 Javascript
Angular2 父子组件通信方式的示例
Jan 29 Javascript
微信小程序实现全国机场索引列表
Jan 31 Javascript
详解Angular6学习笔记之主从组件
Sep 05 Javascript
puppeteer库入门初探
Jan 09 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
Apr 04 Javascript
vue项目proxyTable配置和部署服务器
Apr 14 Vue.js
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
PHP 第二节 数据类型之转换
2012/04/28 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
2015/02/20 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
Node.js 实现抢票小工具 &amp; 短信通知提醒功能
2019/10/22 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
Python如何判断数独是否合法
2016/09/08 Python
python 输出上个月的月末日期实例
2018/04/11 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
Python 如何测试文件是否存在
2020/07/31 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
钉钉企业内部H5微应用开发详解
2020/05/12 HTML / CSS
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
什么是设计模式
2012/06/17 面试题
精细化工应届生求职信
2013/11/17 职场文书
计算机专业毕业生自我鉴定
2014/01/16 职场文书
自立自强的名人事例
2014/02/10 职场文书
转让协议书范本
2014/04/15 职场文书
求职信怎么写范文
2014/05/26 职场文书
文明寝室标语
2014/06/13 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
员工工作自我评价
2014/09/26 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书