浅析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 相关文章推荐
json跟xml的对比分析
Jun 10 Javascript
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
Mar 21 Javascript
Jquery数独游戏解析(一)-页面布局
Nov 05 Javascript
js 遍历对象的属性的代码
Dec 29 Javascript
javascript递归回溯法解八皇后问题
Apr 22 Javascript
深入理解关于javascript中apply()和call()方法的区别
Apr 12 Javascript
原生js实现可拖拽效果
Feb 28 Javascript
Node.JS更改Windows注册表Regedit的方法小结
Aug 18 Javascript
详解Node.js中的Async和Await函数
Feb 22 Javascript
jQuery使用each遍历循环的方法
Sep 19 jQuery
Angular2实现的秒表及改良版示例
May 10 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
May 28 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
PHP+DBM的同学录程序(5)
2006/10/09 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
2014/07/04 PHP
PHP接口继承及接口多继承原理与实现方法详解
2017/10/18 PHP
jQuery 标题的自动翻转实现代码
2009/10/14 Javascript
jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
2013/01/23 Javascript
js中的异常处理try...catch使用介绍
2013/09/21 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
Javascript技术栈中的四种依赖注入详解
2016/02/23 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
Vue关于数据绑定出错解决办法
2017/05/15 Javascript
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
JS将时间秒转换成天小时分钟秒的字符串
2019/07/10 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
vue data变量相互赋值后被实时同步的解决步骤
2020/08/05 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
python skimage 连通性区域检测方法
2018/06/21 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
python如何输出反斜杠
2020/06/18 Python
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
2014大学生全国两会学习心得体会
2014/03/13 职场文书
学生党员批评与自我批评
2014/10/15 职场文书
2015教师节通讯稿
2015/07/20 职场文书
python图片灰度化处理的几种方法
2021/06/23 Python