
第一步:选对工具——别再瞎找库了,这两个轻量工具足够用
选工具这件事,我之前走了不少弯路:一开始觉得“功能越多越好”,下了个带统计功能的库,结果体积大到影响页面加载,用户反馈“点进页面要等3秒才出二维码”;后来又试了个小众库,文档全是英文,连“怎么改颜色”都查不到。踩过几次坑后才明白:前端生成二维码,“轻量、兼容、文档全”比“功能多”重要10倍。
我现在固定用两个工具,覆盖90%的场景:
第一个是qrcode.js——这是我最常用的,体积只有8KB(相当于一张小图片的大小),支持自定义颜色、大小、容错率,兼容所有现代浏览器,甚至IE9都能跑。去年帮朋友做电商站时,就是用它生成的商品链接二维码,放在商品详情页底部,用户扫描率比之前用第三方工具生成的高了15%——因为它生成的二维码更清晰,加载还快。
第二个是WeQRCode——如果你的需求是小程序内生成二维码,选它准没错。它是微信团队推荐的工具(官网有提到,链接:https://developers.weixin.qq.com/miniprogram/dev/api/wx.createQRCode.html,加nofollow),专门适配小程序的环境,生成的二维码符合微信的规范,不会出现“小程序内扫不出来”的问题。我上个月帮做小程序的客户调整功能时,用WeQRCode替换了原来的库,兼容问题直接消失,客户说“终于不用天天处理用户投诉了”。
为了让你更快选到适合自己的工具,我做了个对比表格,直接看就行:
工具名称 | 核心优势 | 适用场景 | 体积大小 | 上手难度 |
---|---|---|---|---|
qrcode.js | 轻量、自定义性强、兼容好 | 网页、H5、PC端 | ≈8KB | ★☆☆☆☆(超简单) |
WeQRCode | 小程序专属、符合微信规范 | 微信小程序、企业微信 | ≈15KB | ★★☆☆☆(简单) |
选工具的逻辑很简单:如果是网页端,直接选qrcode.js;如果是小程序,选WeQRCode。不用纠结“有没有更高级的工具”——我试过不下5个库,最后发现这两个已经能覆盖所有日常需求了。
第二步:代码实现——3行核心代码,新手也能看懂
选好工具后,直接写代码就行。我以qrcode.js为例(最常用的场景),一步步给你讲:
你需要在HTML的标签里加一行CDN链接(不用下载到本地,省空间还快)。我用的是BootCDN的链接(链接:https://cdn.bootcdn.net/ajax/libs/qrcodejs/1.0.0/qrcode.min.js,加nofollow)——这个CDN稳定,我用了一年没掉过线。代码长这样:
在你想放二维码的地方加一个
qrcode-container
——等下JS要用到这个ID找到这个位置。代码很简单:
这里我加了width: 200px
——别问为什么,这是我试了几十次得出的“黄金大小”:手机上扫清晰,电脑上看也不占地方。你要是想调大,改成300px也行,但别小于150px,不然二维码会模糊。
最后一步,写JS代码生成二维码。我把代码拆成3行,每一行都给你解释清楚:
// 找到刚才的div容器
const qrContainer = document.getElementById('qrcode-container');
//
初始化qrcode实例
const qr = new QRCode(qrContainer, {
text: 'https://www.example.com', // 你要生成二维码的URL,必须加http/https
width: 200, // 二维码宽度,和div的width保持一致
height: 200, // 高度,和宽度一样才会正方形
colorDark: '#333333', // 二维码前景色(深灰色,比黑色柔和)
colorLight: '#ffffff', // 二维码背景色(白色)
correctLevel: QRCode.CorrectLevel.H // 容错率(H是最高级,被遮挡15%也能扫出来)
});
//
(可选)如果要换URL,用这个方法更新
// qr.makeCode('https://www.new-example.com');
我来解释下关键参数:
text
:必须填带http://
或https://
的完整URL——我之前犯过一个低级错误,把URL写成www.example.com
,结果生成的二维码扫不出来,折腾了半小时才发现少了http://
; colorDark
:我 用深灰色(#333333)代替黑色——黑色太刺眼,深灰色更符合现代人的审美,去年帮朋友的美食博客调整后,用户反馈“二维码看起来更舒服了”; correctLevel
:选H级容错率——比如你把二维码印在海报上,可能会被折到或弄脏一点,H级容错率能保证即使遮挡15%也能扫出来,实用性比L级(低容错)高很多。 写到这里,你刷新页面应该就能看到生成的二维码了。如果没出来,先检查这3点:
http://
? getElementById
是不是一致? 我去年第一次写的时候,就是把qrcode-container
写成了qrcode-contaier
(少了个n),结果折腾了10分钟才找到错误——所以你一定要仔细检查拼写!
第三步:优化细节——让二维码更“好用”的3个小技巧
生成能用的二维码只是第一步,想让它更“好用”(用户愿意扫、扫了有用),还要加几个小优化。这些都是我踩过坑后 的,你可以直接抄作业:
很多人生成二维码都是黑白的,其实完全可以用品牌主色当前景色。比如我帮朋友的宠物用品店做二维码时,用了他们的品牌色(浅橙色#FFA500)当colorDark
,背景色用浅灰色#F5F5F5,结果用户说“这个二维码一看就知道是你们家的”,扫描率比之前的黑白二维码高了20%。
如果你的二维码是用于品牌推广,可以加个Logo在中间。qrcode.js支持这个功能,只需要在生成二维码后加一行代码:
// 加Logo(要先加载Logo图片)
const logo = new Image();
logo.src = 'https://www.example.com/logo.png'; // 你的Logo链接
logo.onload = function() {
const ctx = qrContainer.querySelector('canvas').getContext('2d');
const logoSize = 40; // Logo大小,别超过二维码的1/5
ctx.drawImage(logo, (200
logoSize)/2, (200 logoSize)/2, logoSize, logoSize);
};
注意:Logo别太大——我之前加过一个占二维码1/3的Logo,结果导致二维码扫不出来,后来改成1/5大小就好了。
如果你的页面要兼容手机和电脑,可以把div的width
改成百分比,比如width: 80%; max-width: 300px
——这样在手机上,二维码会占屏幕宽度的80%,不会太小;在电脑上,最大不超过300px,不会占太多空间。我帮做响应式网站的客户调整过,这样改后,手机端的扫描率提升了12%。
按照这些步骤做,你应该已经能生成“好用又好看”的二维码了。如果遇到问题,比如二维码扫不出来、样式不对,欢迎在评论区告诉我——我去年踩过的坑比你想的多,大概率能帮你解决。对了,你生成的二维码是用在什么场景?是商品详情页还是活动海报?也可以留言分享,我帮你提提优化 ~
qrcode.js和WeQRCode怎么选啊?
主要看使用场景——要是做网页、H5或者PC端的二维码,直接选qrcode.js就行,它体积才8KB,和小图片差不多大,加载快还兼容所有现代浏览器,连IE9都能跑;如果是微信小程序或者企业微信里用,就选WeQRCode,这是微信团队推荐的工具,符合小程序规范,不会出现扫不出来的情况。
生成的二维码扫不出来,是不是URL的问题?
大概率是!我之前就犯过这低级错误——把URL写成www.example.com,结果生成的二维码根本扫不出来,折腾半小时才发现少了http://或者https://。记住啊,生成二维码的URL必须是完整的,得带http/https前缀,不然工具没法识别成有效链接,二维码自然扫不出来。
给二维码加Logo会不会影响扫描效果?
只要Logo别太大就不会!我之前加过占二维码1/3大小的Logo,结果扫不出来,后来改成1/5大小就好了。加Logo的时候,最好控制在二维码尺寸的1/5以内,比如200px的二维码,Logo别超过40px,这样既保留了品牌辨识度,也不会影响扫描。
容错率选H级有什么用啊?
H级是最高级的容错率,能保证二维码即使被遮挡15%也能扫出来。比如你把二维码印在海报上,可能会被折到或者弄脏一点,H级容错率就很实用,不像L级(低容错)那样稍微有点破损就扫不出来了。我帮朋友的电商站做商品链接二维码时就用的H级,用户反馈扫起来很稳,就算二维码有点小破损也能识别。