小程序基础库探究:说说formid生成的实现
熟悉小程序的都知道,模板消息于2020年1月10日下线了,官方推荐用户使用订阅消息。现在已经是1202年了,探讨一下一个已经下线的功能的实现应该问题不大吧。
然后之前很多老的小程序发送消息给用户都是使用的模板消息,说到模板消息就不得不提一个叫做formId的东西了,记得当初在公司开发小程序的时候曾经为了获取这个ID基本上在小程序的每个页面都加了伪装的表单去尽可能多的收集用户产生的formid,为了给用户发送提醒消息,煞费苦心,详见之前写的一篇小程序formid埋点
(福利推荐:阿里云、腾讯云、华为云服务器最新限时优惠活动,云服务器1核2G仅88元/年、2核4G仅698元/3年,点击这里立即抢购>>>)
那么formid是如何生成的呢,带着疑问我们最终在视图层基础库中找到了答案,因为这个功能是大家都会使用的,所以这个基础的功能当然会放在基础库里去实现了。
因为小程序的双线程架构设计,基础库分为视图层基础库及逻辑层基础库,因为id是在用户点击画面上的表单时生成,处在视图层的作用范围,所以这个生成要加在webview基础库里比较高效一些,这样子就避免了与逻辑层线程消息通讯的消耗。
然后我们来看代码吧,以2.8.3版本的基础库为例,格式化之后大概在8600行左右的位置,我们会发现一个名叫 generateFormId
的函数,函数的核心方法如下:
return ((i = Date.now()), 'undefined' != typeof performance && 'function' == typeof performance.now && (i += performance.now()), 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace( /[xy]/g, function (e) { var t = (i + 16 * Math.random()) % 16 | 0; return ( (i = Math.floor(i / 16)), ('x' === e ? t : (3 & t) | 8).toString(16) ); } )).replace(/-/g, ''); var i;
这个大家应该很熟悉了,就是生成唯一uuid的JS代码,所以我们可以得出结论,所说的formid就是结合当前时间随机生成的一串32位uuid字符串。formid只能使用一次且有效期只有7天,所以基础库里基于时间生成的uuid完全可以满足这个需求,可以保证在全球范围的唯一性。
当然基础库里还存在着其它一些有意思的东西,js的写法也是令人大开眼界。后面有机会再探讨吧。
参考资料
- form
- 模板消息
- UUID是如何保证唯一性的?
你还在原价购买阿里云、腾讯云、华为云、天翼云产品?那就亏大啦!现在申请成为四大品牌云厂商VIP用户,可以3折优惠价购买云服务器等云产品,并且可享四大云服务商产品终身VIP优惠价,还等什么?赶紧点击下面对应链接免费申请VIP客户吧:
相关文章
- Jgit的使用笔记
- 利用Github Action实现Tornadofx/JavaFx打包
- 叹息!GitHub Trending 即将成为历史!
- 微软软了?开源社区讨论炸锅,GitHub CEO 亲自来答
- GitHub Trending 列表频现重复项,前后端都没去重?
- Photoshop Elements 2021版本软件安装教程(mac+windows全版本都有)
- (ps全版本)Photoshop 2020的安装与破解教程(mac+windows全版本都有)
- (ps全版本)Photoshop cc2018的安装与破解教程(mac+windows全版本,包括2023
- 环境搭建:Oracle GoldenGate 大数据迁移到 Redshift/Flat file/Flume/Kafka测试流程
- 每个开发人员都要掌握的:最小 Linux 基础课
- 来撸羊毛了!Windows 环境下 Hexo 博客搭建,并部署到 GitHub Pages
- 超实用!手把手入门 MongoDB:这些坑点请一定远离
- 【GitHub日报】22-10-09 zustand、neovim、webtorrent、express 等4款App今日上新
- 【GitHub日报】22-10-10 brew、minio、vite、seaweedfs、dbeaver 等8款App今日上新
- 【GitHub日报】22-10-11 cobra、grafana、vue、ToolJet、redwood 等13款App今日上新
- Photoshop 2018 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2017 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2020 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2023 资源免费下载(mac+windows全版本都有,包括最新的2023)
- 最新版本Photoshop CC2018软件安装教程(mac+windows全版本都有,包括2023