@veaba/qrcode-wasm
浏览器环境的 WASM 版本,基于 Rust 编译,提供优秀的 QRCode 生成性能。
安装
初始化
WASM 需要异步初始化。initWasm() 函数自动检测你的构建工具环境:
- Vite: 自动使用
?url导入 WASM 文件 - Webpack 5: 使用
new URL()方式加载 - Parcel: 使用内置 WASM 支持
- Node.js: 使用文件系统读取
注意: 如果你使用 Vite 且遇到 WASM 加载问题,确保使用
initWasm()而不是旧的init()。
统一 API(推荐)
@veaba/qrcode-wasm 现在提供与 @veaba/qrcode-js 完全一致的 API,方便在两个包之间无缝切换:
基础用法
使用缓存(推荐)
样式化二维码
批量生成
异步生成
底层 WASM API(可选)
如果需要更底层的控制,可以直接使用 WASM 原生 API:
使用 QRCodeGenerator(可复用实例)
Canvas 渲染
如果需要像素数据用于 Canvas:
在框架中的最佳实践
React Hook
Vue Composable
API 参考
统一 API(与 qrcode-js 一致)
底层 WASM API
性能提示
- 复用实例:使用缓存版本或
QRCodeGenerator提升性能 - 批量生成:使用
generateBatchQRCodes比循环调用更快 - 缓存初始化:在应用启动时初始化 WASM,避免首次生成时的延迟
- 及时释放:WASM 对象需要手动调用
free()释放内存(底层 API)
与 @veaba/qrcode-js 的选择
选择 @veaba/qrcode-wasm:
- ✅ 追求极致性能
- ✅ 现代浏览器环境
- ✅ 高频生成场景
选择 @veaba/qrcode-js:
- ✅ 对包大小敏感
- ✅ 需要兼容旧浏览器
- ✅ 不想处理异步初始化
迁移指南
从旧版本迁移到统一 API: