浅析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 相关文章推荐
自己动手制作jquery插件之自动添加删除行功能介绍
Oct 14 Javascript
用js正确判断用户名cookie是否存在的方法
Jan 28 Javascript
javascript结合canvas实现图片旋转效果
May 03 Javascript
用js读写cookie的简单方法(推荐)
Aug 08 Javascript
H5移动端图片压缩上传开发流程
Nov 09 Javascript
解析Vue2 dist 目录下各个文件的区别
Nov 22 Javascript
JS基于递归实现网页版计算器的方法分析
Dec 20 Javascript
JS判断两个数组或对象是否相同的方法示例
Feb 28 Javascript
使用 Vue 实现一个虚拟列表的方法
Aug 20 Javascript
vant实现购物车功能
Jun 29 Javascript
微信小程序实现电子签名功能
Jul 29 Javascript
Vue Render函数原理及代码实例解析
Jul 30 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
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
PHP实现获取某个月份周次信息的方法
2015/08/11 PHP
laravel 解决crontab不执行的问题
2019/10/22 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
Vue.js每天必学之构造器与生命周期
2016/09/05 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
node.js实现简单的压缩/解压缩功能示例
2019/11/05 Javascript
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
讲解Python中fileno()方法的使用
2015/05/24 Python
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
Python实现Linux中的du命令
2017/06/12 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
PyCharm+Miniconda3安装配置教程详解
2021/02/16 Python
浅谈HTML5新增及移除的元素
2016/06/27 HTML / CSS
html如何对span设置宽度
2019/10/30 HTML / CSS
英国电气世界:Electrical World
2019/09/08 全球购物
英国在线滑雪板和冲浪商店:The Board Basement
2020/01/11 全球购物
专业实习自我鉴定
2013/10/29 职场文书
大三学生入党思想汇报
2014/01/02 职场文书
公司营业员的自我评价
2014/03/04 职场文书
2014年度个人工作总结
2014/11/07 职场文书
打架检讨书
2015/01/27 职场文书