如何快速在微信小程序生成二维码?weapp-qrcode 完整教程与避坑指南 🚀
weapp-qrcode 是一款专为微信小程序设计的高效二维码生成工具,支持原生小程序及 WePY、mpvue、Taro 等主流框架,通过简单的 JavaScript 调用即可快速渲染二维码,让开发者轻松实现扫码功能。
📸 为什么选择 weapp-qrcode?
传统二维码生成方案常受限于小程序环境的 DOM 操作限制,而 weapp-qrcode 深度优化了底层逻辑,不依赖任何 DOM API,完美适配小程序沙箱环境。无论是商品推广、用户登录还是场景导航,都能通过几行代码快速集成,极大提升开发效率!

weapp-qrcode 生成的二维码示例,支持自定义颜色与 logo 图标
🔧 2 分钟快速上手
1️⃣ 环境准备与安装
方式一:直接引入文件
- 克隆仓库:
git clone https://gitcode.com/gh_mirrors/we/weapp-qrcode - 将
src/qrcode.js复制到项目utils目录(如examples/wechat-app/utils/weapp.qrcode.js)
方式二:npm 安装(框架用户推荐)
npm install weapp-qrcode --save
2️⃣ 基础使用步骤
① 创建 Canvas 容器
在页面 WXML 中添加绘制区域:
<canvas style="width: 200px; height: 200px;" canvas-id="myQrcode"></canvas>
② 调用绘制函数
在页面 JS 中引入并使用 drawQrcode():
import drawQrcode from '../../utils/weapp.qrcode.js'
drawQrcode({
width: 200, // 二维码宽度(与 canvas 保持一致)
height: 200, // 二维码高度(与 canvas 保持一致)
canvasId: 'myQrcode', // canvas 标识
text: 'https://example.com', // 二维码内容
background: '#ffffff', // 背景色(默认白色)
foreground: '#000000' // 前景色(默认黑色)
})
✨ 核心提示:调用前必须确保能获取 Canvas 上下文!若绘制失败,检查 canvasId 是否与 WXML 中一致。
🎨 高级功能:自定义二维码样式
添加中心 Logo 图标
v1.0.0+ 版本支持在二维码中心绘制图片:
drawQrcode({
// ...基础配置
image: {
imageResource: '/images/icon.png', // 图片路径(如 examples/wechat-app/images/icon.png)
dx: 70, // 图片左上角 x 坐标
dy: 70, // 图片左上角 y 坐标
dWidth: 60, // 图片宽度
dHeight: 60 // 图片高度
}
})
位置参数可视化说明

通过调整 x/y 坐标可控制二维码在 Canvas 中的绘制位置
🚩 常见问题与解决方案
问题 1:Canvas 绘制失败?
排查步骤:
- 确认
canvasId与 WXML 标签完全一致 - 调用前通过
wx.createCanvasContext(canvasId)验证上下文是否存在:const ctx = wx.createCanvasContext('myQrcode') if (!ctx) { console.error('获取 Canvas 上下文失败!') }
问题 2:安卓设备图片绘制延迟?
解决方案:使用 callback 回调或 wx.nextTick 确保渲染完成:
drawQrcode({
// ...配置
callback: (e) => {
console.log('二维码绘制完成', e)
// 后续操作(如保存图片)放这里
}
})
📦 框架适配示例
WePY 框架
import drawQrcode from 'weapp-qrcode'
// 在页面 onLoad 中调用
onLoad() {
drawQrcode({
canvasId: 'wepyQrcode',
text: 'WePY + weapp-qrcode',
width: 180,
height: 180
})
}
Taro 框架
// src/pages/index/index.js
import Taro from '@tarojs/taro'
import drawQrcode from '../../../utils/weapp.qrcode'
componentDidMount() {
const ctx = Taro.createCanvasContext('taroQrcode', this)
drawQrcode({ ctx, text: 'Taro 二维码示例', width: 200, height: 200 })
}
📚 项目资源与拓展
- 完整示例代码:examples/(包含原生/WePY/mpvue/Taro 多种实现)
- API 文档:支持纠错级别(L/M/Q/H)、颜色自定义、坐标偏移等 10+ 配置项
- 许可证:MIT 开源协议,商业项目可放心使用
通过 weapp-qrcode,开发者无需关注复杂的二维码生成算法,只需专注业务逻辑实现。无论是电商小程序的商品二维码,还是会员系统的身份标识,这款工具都能帮你快速搞定!现在就克隆项目,体验 2 分钟集成的便捷吧~ 💪
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



