浅析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浅谈之引用类型
Dec 18 Javascript
Jquery 获取对象的几种方式介绍
Jan 17 Javascript
jQuery中hover方法和toggle方法使用指南
Feb 27 Javascript
JQuery查找DOM节点的方法
Jun 11 Javascript
Bootstrap实现默认导航栏效果
Sep 21 Javascript
js+canvas绘制五角星的方法
Jan 28 Javascript
vue.js实现请求数据的方法示例
Feb 07 Javascript
十个免费的web前端开发工具详细整理
Sep 18 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
Mar 21 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
Jun 30 Javascript
vue 表单之通过v-model绑定单选按钮radio
May 13 Javascript
小程序实现投票进度条
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基本语法总结
2014/09/06 PHP
php验证码生成器
2017/05/24 PHP
一段实时更新的时间代码
2006/07/07 Javascript
Prototype使用指南之hash.js
2007/01/10 Javascript
JavaScript的document对象和window对象详解
2010/12/30 Javascript
一个JavaScript变量声明的知识点
2013/10/28 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
Django 实现admin后台显示图片缩略图的例子
2019/07/28 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
大学生职业生涯规划书模板
2014/01/03 职场文书
2014年学生会工作总结
2014/11/07 职场文书
初中生毕业评语
2014/12/29 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书
运动会通讯稿300字
2015/07/20 职场文书
标枪加油稿
2015/07/22 职场文书
医院消毒隔离制度
2015/08/05 职场文书
判断Python中的Nonetype类型
2021/05/25 Python
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS