微信小程序、支付宝小程序、H5根据字符串生成相同的二维码
前言:
建议后端合成二维码,直接返回图片给前端(包括二维码带logo),如果后端没有实现这个,只返回字符串给前端,那么就需要前端来用插件合成二维码了。
前端合成二维码,就要用到插件。不少H5的二维码插件都用到DOM的,小程序中没有DOM这个概念,所以h5的好多插件并不能直接用到小程序上,也就出现了h5插件到小程序的移植。
如果项目有多个平台,那么就建议使用已经移植到小程序上的插件,这样能保证不同平台生成的二维码是相同的,不然就会出现不同平台生成券码不一致的问题(虽说不影响券码的识别,但是总归不太好)。
解决方案:
H5使用QRCode插件,小程序使用QRcode移植的weapp-qrcode-base64插件,这个本来针对微信小程序做的移植,经验证,支付宝小程序也可以用。使用这两个插件,生成是二维码就是一致的了。
这个插件是不基于canvas的,具体用法这里就不说了,开源项目里边都有详细说明。
对于weapp-qrcode-base64的使用,详见博文:https://www.cnblogs.com/xyyt/p/10945435.html
后记:
这个插件还是挺不错的,可以设置二维码的容错率以及码的颜色,不足之处就是不能合成logo,需要前端后期将logo布局到合成的二维码上方。
能够直接合成logo的插件也尝试过,但是在开发及跨平台移植过程中出现不少问题,最后也就尝试出来上边这种方式,实现了一直的二维码合成。
下面介绍的其他插件中有支持直接合成logo的,有兴趣的同学可以研究下。
其他插件介绍:
wxbarcode——支持微信小程序,支付宝小程使用须改造,详见博文:https://www.cnblogs.com/xyyt/p/12512687.html。
适用场景:同时展示二维码、条形码。
使用方式:引用js
插件地址:https://www.npmjs.com/package/wxbarcode。
主要代码结构如下:
建议将utils文件夹提出来直接用,这样方便在微信、支付宝小程序之间进行移植。
优点:同时包含二维码、条形码,亦可单独使用|支付宝可用(改造调用封装函数);
插件地址:https://www.npmjs.com/package/weapp-qrcode
优点:支持容错率|支持logo图片|支持回调函数|支持调整二维码计算模式(typeNumber为3时同weapp-qrcode-base64)
缺点:华为v10出现间隔性不显示的问题(两个页面之间切换,有时候不显示二维码
-----------------------------------------------------------------
node-qrcode-npm——支持支付宝小程序、h5:
插件地址:https://www.npmjs.com/package/qrcode
使用方式:npm安装
优点:支持容错率|支持回调函数|H5/支付宝小程序通用
缺点:微信小程序不支持(插件使用了node 的 buffer,微信小程序不支持)
--------------------------H5插件----------------------------------
jsbarcode——支持H5:
插件地址:https://www.npmjs.com/package/qrcodejs2
使用方式:npm安装
优点:支持多种编码格式|支持多种调用方式|支持设置颜色|支持显示券码|支持img/canvas/svg
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通