当前位置: 首页 > news >正文

[Vue]从数据库中动态加载阿里巴巴矢量图标的两种方式

记录一次在Vue中动态使用阿里巴巴矢量图标库

这是本人第一次使用阿里巴巴的矢量图标库,简单的导入和使用的话网上的教程很多,这里不多赘述,本人的需求是从数据库中加载出来并且显示到页面上,接下来简述一下如何实现。

以下代码均是本人实际推敲、测试可用后写出来的,请放心食用。



前言

阿里巴巴矢量图标库(以下简称阿里巴巴图标)针对每一个图标提供了三种编码方式,分别是UnicodeFont classSymbol。它们的名称特点如下:




方式一 | 动态加载Unicode编码


如上图所示:Unicode图标的名字是&开头;结尾的一个编码,在阿里巴巴的官方教程中它的使用如下:

官方写法:

<i class="iconfont">&#xe600;</i>

错误写法:针对这种编码方式的动态加载,我在网上并没有找到可用的教程。不过我的理解很简单,标签里面的class="iconfont"写死,标签中间写上它的编码就可以。我最初的想法很简单,用插值表达式嘛,所以代码如下(失败了)

<i class="iconfont">{{item.icon}}</i>

上面的代码仅仅是将数据库中的一段显示的放在了前端,效果嘛,本来该出现图标的位置出现的是&#xe600;这一串字符。

正确写法:稍作思考后,我想到了HTML中常用的空格,也就是&nbsp;等。我觉得Unicode编码也许不能作为文本来处理,应该用html来处理,因此我们应该使用v-html来取代插值表达式,代码如下:

<i class="iconfont" v-html="item.icon"></i>

我在数据库中存储的数据如下(显示效果如右侧所示):





方式二 | 使用Font class的方式

其实Font class的图标我觉得更好用一些,使用起来有点像是element-ui的图标,官方教程如下。

官方写法:

<span class="iconfont icon-sp-xxx"></span>

'icon-sp-'是我自己定义的前缀,下载图标的时候可以设置。

这种写法很简单,因此如果要从数据库中查出来显示到前端的话,只要如下就可以(注意空格):

<i :class="'iconfont '+item.icon"></i>

相较于官方教程写死class,这种方式只不过是给class绑定了一个字符串 + 空格 + item,很好理解,不多赘述,下面是我数据库中存储的数据与前端显示效果:

记得存储的时候忽略最前面的.

第三种方式就省略吧,因为针对于动态导入,我们考虑的只有名字或者是编码,而只看名字的话,第二种种方式和第三种方式别无二致,一样用吧。

拓展

当然了,针对方式二稍作改变,将iconfont icon-sp-shezhi这整个字段存储在数据库中,然后前段代码如下也是可以显示的:

<i :class="item.icon"></i>

数据库中存储数据与显示效果如下所示:

相关文章:

  • 华为设备vlan下配置MSTP,STP选举
  • leetcode 每日一题 2024年01月14日 删除排序链表中的重复元素
  • Win10电脑关闭OneDrive自动同步的方法
  • Java8的LocalDateTime使用技巧分享
  • 【Linux操作】国产Linux服务管理操作
  • AI教我学编程之C#变量及实例演示
  • Alibaba-> EasyExcel 整理3
  • ubuntu通过virtualbox安装win虚拟机
  • 【k8s】Kubernetes 声明式 API、命令式
  • Linux网络基础及bonding实际操作
  • 景联文科技:以高质量数据赋能文生图大模型
  • 28 星际旋转
  • OceanBase原生分布式数据库
  • Go interface基础
  • Ubuntu18.04 Qt 实现MQTT
  • @angular/forms 源码解析之双向绑定
  • 0x05 Python数据分析,Anaconda八斩刀
  • CSS实用技巧干货
  • Date型的使用
  • docker-consul
  • express + mock 让前后台并行开发
  • JavaScript设计模式与开发实践系列之策略模式
  • JavaScript学习总结——原型
  • mongo索引构建
  • Redis在Web项目中的应用与实践
  • Redis中的lru算法实现
  • VUE es6技巧写法(持续更新中~~~)
  • Vue2.x学习三:事件处理生命周期钩子
  • 编写高质量JavaScript代码之并发
  • 番外篇1:在Windows环境下安装JDK
  • 回顾2016
  • 技术胖1-4季视频复习— (看视频笔记)
  • 聚类分析——Kmeans
  • 坑!为什么View.startAnimation不起作用?
  • 说说动画卡顿的解决方案
  • 通信类
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​如何在iOS手机上查看应用日志
  • #在 README.md 中生成项目目录结构
  • (C语言)球球大作战
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (ZT)一个美国文科博士的YardLife
  • (搬运以学习)flask 上下文的实现
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (转)shell中括号的特殊用法 linux if多条件判断
  • .htaccess 强制https 单独排除某个目录
  • .Net 应用中使用dot trace进行性能诊断
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • /bin/rm: 参数列表过长"的解决办法
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [1]-基于图搜索的路径规划基础
  • [ACTF2020 新生赛]Include
  • [Android]How to use FFmpeg to decode Android f...