纯 JavaScript 实现的 QRCode 生成库,无需 WASM,兼容性更好,适合对 WASM 有顾虑的场景。
| 特性 | @veaba/qrcode-js | @veaba/qrcode-wasm |
|---|---|---|
| 依赖 | 无 | 需要加载 .wasm 文件 |
| 兼容性 | IE11+ | 现代浏览器 |
| 性能 | 快 | 更快 |
| 包大小 | ~15KB | ~45KB (含 wasm) |
| 启动时间 | 即时 | 需要异步初始化 |
| API | 统一 | 统一 |
对于重复文本,使用缓存版本可大幅提升性能:
如果需要自定义渲染:
与 WASM 版本的性能对比(ops/s):
| 测试项 | @veaba/qrcode-js | @veaba/qrcode-wasm |
|---|---|---|
| 单条生成 (medium) | 9,662 | ~15,000 |
| SVG 输出 | 9,827 | ~17,000 |
| 缓存命中 | ~500,000 | ~500,000 |
虽然 WASM 更快,但纯 JS 版本在大多数场景下性能足够,且无需处理异步初始化的复杂性。
选择 @veaba/qrcode-js 而不是 @veaba/qrcode-wasm 的场景:
选择 @veaba/qrcode-wasm 的场景:
@veaba/qrcode-js 和 @veaba/qrcode-wasm 提供完全一致的 API:
这使得在两个包之间切换变得非常容易,只需更改导入语句即可。