API 参考

QRCode 生成器的完整 API 文档。

包概览

包名环境主要导出说明
@veaba/qrcode-js浏览器QRCodeCore, QRErrorCorrectLevel纯 JavaScript,即时启动
@veaba/qrcode-wasm浏览器QRCodeCore, QRErrorCorrectLevel, initRust WASM,性能最佳
@veaba/qrcode-nodeNode.jsQRCode, QRErrorCorrectLevelNode.js 环境
@veaba/qrcode-bunBunQRCode, QRErrorCorrectLevelBun 运行时
qrcode-rustRustQRCode, QRCodeOptions纯 Rust crate
qrcode-fastRustQRCode, QRErrorCorrectLevel极致性能 Rust crate
@veaba/qrcode-js-shared通用QRCodeCore, 工具函数内部共享包

统一 API

@veaba/qrcode-js 和 @veaba/qrcode-wasm 提供完全一致的 API:

快速开始

// JavaScript 版本
import { QRCodeCore, QRErrorCorrectLevel } from '@veaba/qrcode-js';

const qr = new QRCodeCore('Hello World', QRErrorCorrectLevel.H);
const svg = qr.toSVG(256);
// WASM 版本
import init, { QRCodeCore, QRErrorCorrectLevel } from '@veaba/qrcode-wasm';

await init();
const qr = new QRCodeCore('Hello World', QRErrorCorrectLevel.H);
const svg = qr.toSVG(256);

快速导航

类型定义

QRErrorCorrectLevel

所有包共用的纠错级别枚举:

enum QRErrorCorrectLevel {
  L = 1,  // ~7% 容错
  M = 0,  // ~15% 容错(默认)
  Q = 3,  // ~25% 容错
  H = 2   // ~30% 容错
}

QRCodeOptions

interface QRCodeOptions {
  text: string;
  correctLevel?: QRErrorCorrectLevel;
  size?: number;
  colorDark?: string;
  colorLight?: string;
}

StyledSVGOptions

interface StyledSVGOptions {
  size?: number;           // 默认 256
  colorDark?: string;      // 默认 '#000000'
  colorLight?: string;     // 默认 '#ffffff'
  borderRadius?: number;   // 默认 0
  gradient?: {             // 默认 null
    color1: string;
    color2: string;
  } | null;
  quietZone?: number;      // 默认 0
  logoRegions?: Array<{    // 默认 []
    row: number;
    col: number;
    size: number;
  }>;
}

通用方法

所有 QRCode 类都支持以下方法:

方法说明参数返回值
toSVG(size?)生成 SVGsize?: numberstring
toStyledSVG(options?)样式化 SVGoptions?: StyledSVGOptionsstring
getModuleCount()获取模块数-number
isDark(row, col)判断模块颜色row: number, col: numberboolean

样式生成函数

基础样式

函数参数说明
generateRoundedQRCode(text, size?, radius?)string, number?, number?圆角二维码
generateQRCodeWithLogoArea(text, size?, logoRatio?)string, number?, number?带 Logo 区域
generateGradientQRCode(text, size?, color1?, color2?)string, number?, string?, string?渐变二维码

平台风格

函数参数说明
generateWechatStyleQRCode(text, size?)string, number?微信绿色风格
generateDouyinStyleQRCode(text, size?)string, number?抖音黑底彩色风格
generateAlipayStyleQRCode(text, size?)string, number?支付宝蓝色风格
generateXiaohongshuStyleQRCode(text, size?)string, number?小红书红色风格
generateCyberpunkStyleQRCode(text, size?)string, number?赛博朋克霓虹风格
generateRetroStyleQRCode(text, size?)string, number?复古 sepia 风格
generateMinimalStyleQRCode(text, size?)string, number?极简风格

缓存版本

所有样式函数都有对应的缓存版本(函数名后加 Cached):

非缓存版本缓存版本
generateRoundedQRCodegenerateRoundedQRCodeCached
generateGradientQRCodegenerateGradientQRCodeCached
generateWechatStyleQRCodegenerateWechatStyleQRCodeCached
......

批量/异步生成

函数参数返回值说明
generateBatchQRCodes(texts, options?)string[], QRCodeOptions?string[]批量生成
generateBatchQRCodesCached(texts, options?)string[], QRCodeOptions?string[]批量生成(缓存)
generateQRCodeAsync(text, options?)string, QRCodeOptions?Promise<QRCodeResult>异步生成
generateBatchAsync(texts, options?)string[], QRCodeOptions?Promise<QRCodeResult[]>批量异步

缓存管理

函数参数返回值说明
getCachedQRCode(text, correctLevel?)string, QRErrorCorrectLevel?QRCodeCore获取缓存的 QRCode
clearQRCodeCache()-void清空缓存
getCacheStats()-{ size, maxSize, keys }获取缓存统计
configureCache(options)CacheOptionsvoid配置缓存

示例代码

浏览器 (JS)

import { QRCodeCore, QRErrorCorrectLevel } from '@veaba/qrcode-js';

const qr = new QRCodeCore('https://github.com/veaba/qrcodes', QRErrorCorrectLevel.H);
const svg = qr.toSVG(256);

浏览器 (WASM)

import init, { QRCodeCore, QRErrorCorrectLevel } from '@veaba/qrcode-wasm';

await init();
const qr = new QRCodeCore('https://github.com/veaba/qrcodes', QRErrorCorrectLevel.H);
const svg = qr.toSVG(256);

Node.js

import { QRCode, QRErrorCorrectLevel } from '@veaba/qrcode-node';

const qr = new QRCode('https://github.com/veaba/qrcodes', QRErrorCorrectLevel.H);
const svg = qr.toSVG();
const png = qr.toPNG();

Bun

import { QRCode, QRErrorCorrectLevel } from '@veaba/qrcode-bun';

const qr = new QRCode('https://github.com/veaba/qrcodes', QRErrorCorrectLevel.H);
const svg = qr.toSVG();

Rust

use qrcode_rust::{QRCode, QRErrorCorrectLevel};

let mut qr = QRCode::new();
qr.make_code("https://github.com/veaba/qrcodes");
let svg = qr.get_svg();

包选择指南

场景推荐包原因
现代浏览器,追求性能@veaba/qrcode-wasm性能最佳
需要兼容 IE11@veaba/qrcode-js纯 JS,兼容性好
对包大小敏感@veaba/qrcode-js体积更小 (~15KB)
Node.js 后端@veaba/qrcode-nodeNode 专用 API
Bun 运行时@veaba/qrcode-bunBun 优化
Rust 项目@veaba/qrcode-rust原生 Rust crate