浅析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 相关文章推荐
Javascript 事件流和事件绑定
Jul 16 Javascript
网页上的Javascript编辑器和代码格式化
Apr 25 Javascript
用js来解决ajax读取页面乱码
Nov 28 Javascript
Jquery Ajax请求代码(2)
Jan 07 Javascript
js网页版计算器的简单实现
Jul 02 Javascript
JavaScript实现数据类型的相互转换
Mar 06 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
May 30 Javascript
详解Vue.js中.native修饰符
Apr 24 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
Jan 03 Javascript
如何修改Vue打包后文件的接口地址配置的方法
Apr 22 Javascript
vue移动端的左右滑动事件详解
Jun 17 Javascript
js实现限定区域范围拖拉拽效果
Nov 20 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 设计模式系列之 specification规格模式
2016/01/10 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
2019/10/02 PHP
asp.net和php的区别点总结
2019/10/10 PHP
类似框架的js代码
2006/11/09 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
详解基于angular路由的requireJs按需加载js
2017/01/20 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
python获取指定目录下所有文件名列表的方法
2015/05/20 Python
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
python实现员工管理系统
2018/01/11 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
Python在OpenCV里实现极坐标变换功能
2019/09/02 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
Scrapy 配置动态代理IP的实现
2020/09/28 Python
css3 响应式媒体查询的示例代码
2019/09/25 HTML / CSS
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
房屋转让协议书
2014/04/11 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
给上级领导的感谢信
2015/01/22 职场文书
爱护公物主题班会
2015/08/17 职场文书
教师远程培训心得体会
2016/01/09 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python