代码片段: [https://developers.weixin.qq.com/s/KLaD5MmD7V45)

GitHub: https://github.com/WozHuang/Miniprogram-Demo/tree/master/emoji-parser

本来有人提出要使用表情的时候并不需要做那么多功能,因为utf8字符集中本来就已经定义有表情了,我只要将mysql的字符集改成utf8mb4就可以实现预期的功能。

但是后来又有人嫌弃那个表情丑(我懒得告诉他是因为安卓版本低系统自带的emoji才这么难看,苹果华为的可好看了)

于是就计划实现一个自定义表情的功能(目前只做了微信那种小表情,大表情图暂时没考虑,因为已经做发送图片的功能),一顿寻找资源加思考后做了一个能够将设定的字符替换成图片的组件。

参考博客:

https://blog.csdn.net/frankcheng5143/article/details/64129433

表情&表情code来源:

https://www.oschina.net/code/snippet_146430_27448

优点:

  1. 避免使用系统自带的emoji,省的老有人说丑,再嫌丑的话就让他自己去设计表情反正我给你放进去

缺点:

  1. 因为是使用图片替换的表情,图片的像素对表情的清晰度有影响,缩放下有时候会出现模糊

  2. 使用了组件的方式将字符解析成表情,在硬件条件不佳的情况下可能会影响使用体验

实现原理

核心:

使用[xxx]的形式代表表情

组件解析过程

  1. 将输入的字符串使用正则 /\[[^\[\]]*?\]/g 切割出字符串中 '[xxx]' 形式的字符串,得到字符串数组

    输入字符串: '你真是太[xxx]了'

    切割后得到的字符串数组: ['你真是太', '[xxx]', '了']

    这里 '[xxx]' 对应的可能是某一个表情

  2. 循环字符串数组,如果能够找到 '[xxx]' 对应的表情则显示为一个有对应背景图的 <span> 标签,不是 '[xxx]' 格式和找不到对应表情的字符串则原样显示

效果图:

小程序QQ版表情解析组件的更多相关文章

  1. 微信小程序横版日历,tab栏

    代码地址如下:http://www.demodashi.com/demo/14243.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  2. 微信小程序学习笔记五 常见组件

    1. 常见组件 重点讲解小程序中常用的布局组件 1.1 view 代替 原来的div标签 <!-- pages/index/index.wxml --> <view hover-cl ...

  3. 微信小程序开发03-这是一个组件

    编写组件 基本结构 接上文:微信小程序开发02-小程序基本介绍 我们今天先来实现这个弹出层: 之前这个组件是一个容器类组件,弹出层可设置载入的html结构,然后再设置各种事件即可,这种组件有一个特点: ...

  4. 小程序-文章:微信小程序常见的UI框架/组件库总结

    ylbtech-小程序-文章:微信小程序常见的UI框架/组件库总结 1.返回顶部 1. 想要开发出一套高质量的小程序,运用框架,组件库是省时省力省心必不可少一部分,随着小程序日渐火爆,各种不同类型的小 ...

  5. 微信小程序常见的UI框架/组件库总结

    想要开发出一套高质量的小程序,运用框架,组件库是省时省力省心必不可少一部分,随着小程序日渐火爆,各种不同类型的小程序也渐渐更新,其中不乏一些优秀好用的框架/组件库. 1:WeUI 小程序–使用教程 h ...

  6. 微慕WordPress小程序增强版

    2017年1月9日,张小龙在2017微信公开课Pro上发布的微信小程序正式上线.在过去的2年多的时间里,微信小程序领头,各大互联网平台也不甘落后,陆续推出自己的小程序.2018年7月4日,百度智能小程 ...

  7. 微信小程序入门与实战 常用组件API开发技巧项目实战*全

    第1章 什么是微信小程序? 第2章 小程序环境搭建与开发工具介绍 第3章 从一个简单的“欢迎“页面开始小程序之旅 第4章 第二个页面:新闻阅读列表 第5章 小程序的模板化与模块化 第6章 构建新闻详情 ...

  8. Vant Weapp小程序蹲坑之使用card组件显示价格

    问题 在基于mpvue+Vant Weapp组件库实战过程中,问题越来越多.网络上所谓的"坑"总结,仅仅不过是其开发中所遭所遇之"坑"而已--估计后面的&quo ...

  9. 微信小程序学习笔记四 自定义组件

    1. 自定义组件 类似Vue或react中的自定义组件 小程序允许我们使用自定义组件的方式来构建页面 1.1 创建自定义组件 类似于页面, 一个自定义组件由json wxml wxss js 4个文件 ...

随机推荐

  1. 第一次接触Arduino

    1.百度百科: Arduino包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板:另外一个则是 Arduino IDE,你的计算机中的程序开发环境.你只要在IDE中编写程序代码,将 ...

  2. 密信(MeSince),将取代传统电子邮件

    电子邮件发展至今已经有几十年的历史,但仍然是最重要的现代互联网应用之一.在全球范围内,每小时发送的非垃圾邮件数量超过30亿封,从工作场景的使用到个人生活,电子邮件都扮演着不可或缺的角色.但是由于明文电 ...

  3. APICloud资料

    //语音读text里面的文字 var text=document.getElementById('ready').value; alert(text); var obj = api.require(' ...

  4. Node.js 指南(迁移到安全的Buffer构造函数)

    迁移到安全的Buffer构造函数 移植到Buffer.from()/Buffer.alloc() API. 概述 本指南介绍了如何迁移到安全的Buffer构造函数方法,迁移修复了以下弃用警告: 由于安 ...

  5. excel2013超链接进不去,提示“您的组织策略不允许...”

    搜索regedit 然后找到HKEY_CURRENT_USER->Software->Classes->.html 右键修改或者双击修改数值数据为Htmlfile 关闭之后此窗口,关 ...

  6. 【转载】tslib移植_freescale imx6

    本文来自网络:http://blog.csdn.net/xishuang_gongzi/article/details/49422879 环境:host:Ubuntu12.04target:frees ...

  7. 多本Web前端深度修炼书籍(提供网盘下载链接)

    书籍介绍:这本书涵盖了html5新增标签和功能,而且提供了jquerymobile,Phonegap,Sencha Touch框架的介绍和应用,最后还带了一个移动web应用的样例,绝对是移动web开发 ...

  8. poj2528 Mayor&#39;s posters(线段树,离散化)

    离散化的思想: 对于这样的数据 (3,10000). (9,1000000). (5.100000), (1,1000). (7,1000000) 我们能够将其处理为 (2,7). (5,9). (3 ...

  9. 输入password登录到主界面,录入学生编号,排序后输出

    n 题目:输入password登录到主界面,录入学生编号,排序后输出 n 1.  语言和环境 A.实现语言 C语言 B.环境要求 VC++ 6.0 n 2.  要求 请编写一个C语言程序.将若干学生编 ...

  10. LeetCode_Maximum Depth of Binary Tree

    一.题目 Maximum Depth of Binary Tree My Submissions Given a binary tree, find its maximum depth. The ma ...