浅析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 parsefloat parseint 转换函数
Jan 21 Javascript
jQuery ajax应用总结
Jun 02 Javascript
js获取元素的偏移量offset简单方法(必看)
Jul 05 Javascript
js数组实现权重概率分配
Sep 12 Javascript
vue resource post请求时遇到的坑
Oct 19 Javascript
使用Bootrap和Vue实现仿百度搜索功能
Oct 26 Javascript
create-react-app构建项目慢的解决方法
Mar 14 Javascript
对Angular中单向数据流的深入理解
Mar 31 Javascript
详解JavaScript栈内存与堆内存
Apr 04 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
Feb 28 Javascript
vue基础知识--axios合并请求和slot
Jun 04 Javascript
Javascript中的奇葩知识,你知道吗?
Jan 25 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
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
PHP URL参数获取方式的四种例子
2014/02/28 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
js的window.showModalDialog及window.open用法实例分析
2015/01/29 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
2016/11/09 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
Vue-cli项目获取本地json文件数据的实例
2018/03/07 Javascript
vue-cli扩展多模块打包的示例代码
2018/04/09 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
在IIS服务器上以CGI方式运行Python脚本的教程
2015/04/25 Python
在Django中创建第一个静态视图
2015/07/15 Python
Python编程中使用Pillow来处理图像的基础教程
2015/11/20 Python
使用Python生成XML的方法实例
2017/03/21 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
python爬虫scrapy图书分类实例讲解
2020/11/23 Python
解释一下ArrayList Vector和LinkedList的实现和区别
2013/04/26 面试题
公司培训欢迎词
2014/01/10 职场文书
军训自我鉴定怎么写
2014/02/13 职场文书
岗位廉洁从政承诺书
2014/03/27 职场文书
公司经理聘任书
2014/03/29 职场文书
企业承诺书格式
2014/05/21 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python