浅析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 相关文章推荐
IE bug table元素的innerHTML
Jan 11 Javascript
基于jquery的direction图片渐变动画效果
May 24 Javascript
jQuery 关于伪类选择符的使用说明
Apr 24 Javascript
jquery提交form表单简单示例分享
Mar 03 Javascript
如何防止回车(enter)键提交表单
May 11 Javascript
AngularJS基础知识笔记之过滤器
May 10 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
Apr 15 Javascript
animate 实现滑动切换效果【实例代码】
May 05 Javascript
jQuery Tree Multiselect使用详解
May 02 jQuery
JS实现在文本指定位置插入内容的简单示例
Dec 22 Javascript
详解自定义ajax支持跨域组件封装
Feb 08 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
Mar 27 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 class类的用法详细总结
2013/10/17 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
PHP常用的缓存技术汇总
2014/05/05 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
php中用memcached实现页面防刷新功能
2014/08/19 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
PHP addslashes()函数讲解
2019/02/03 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
mongoose中利用populate处理嵌套的方法
2017/05/26 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
python list格式数据excel导出方法
2018/10/31 Python
用Python自动清理系统垃圾的实现
2021/01/18 Python
门卫人员岗位职责
2013/12/24 职场文书
优秀食品类广告词
2014/03/19 职场文书
文科毕业生自荐书范文
2014/04/17 职场文书
校园环保标语
2014/06/13 职场文书
工商管理本科生求职信
2014/07/13 职场文书
初中同学会活动方案
2014/08/22 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
加入学生会自荐书
2015/03/05 职场文书
工作一年自我鉴定
2019/06/20 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle