当前位置:首页 > JavaScript

js实现二维码生成

2026-01-31 11:35:17JavaScript

使用 QRCode.js 库生成二维码

QRCode.js 是一个轻量级的 JavaScript 库,用于生成二维码。它支持多种配置选项,如颜色、大小和纠错级别。

安装 QRCode.js:

npm install qrcode

基本用法示例:

js实现二维码生成

// 引入库
import QRCode from 'qrcode';

// 生成二维码到Canvas
QRCode.toCanvas(document.getElementById('canvas'), 'https://example.com', {
  width: 200,
  color: {
    dark: '#000000',
    light: '#ffffff'
  }
}, function (error) {
  if (error) console.error(error);
});

// 生成二维码图片URL
QRCode.toDataURL('https://example.com', {
  width: 200
}, function (err, url) {
  if (err) throw err;
  document.getElementById('qr-img').src = url;
});

使用原生Canvas API生成二维码

如果不依赖第三方库,可以通过Canvas API手动实现简单的二维码生成。

基础实现思路:

js实现二维码生成

function generateQR(text, size) {
  const canvas = document.createElement('canvas');
  canvas.width = size;
  canvas.height = size;
  const ctx = canvas.getContext('2d');

  // 简单示例:生成黑白方块图案
  const moduleSize = size / 10; // 假设10x10模块
  for (let y = 0; y < 10; y++) {
    for (let x = 0; x < 10; x++) {
      const shouldFill = (x + y) % 2 === 0; // 简单交替填充
      ctx.fillStyle = shouldFill ? '#000' : '#fff';
      ctx.fillRect(x * moduleSize, y * moduleSize, moduleSize, moduleSize);
    }
  }

  return canvas;
}

// 使用示例
const qrCanvas = generateQR('test', 200);
document.body.appendChild(qrCanvas);

使用Web Component封装二维码生成器

创建可复用的二维码组件:

class QRCodeElement extends HTMLElement {
  constructor() {
    super();
    this.attachShadow({ mode: 'open' });
  }

  static get observedAttributes() {
    return ['data', 'size'];
  }

  attributeChangedCallback(name, oldValue, newValue) {
    if (oldValue !== newValue) {
      this.render();
    }
  }

  render() {
    const data = this.getAttribute('data') || '';
    const size = parseInt(this.getAttribute('size')) || 200;

    this.shadowRoot.innerHTML = `
      <style>
        :host { display: inline-block; }
        canvas { width: 100%; height: auto; }
      </style>
      <canvas width="${size}" height="${size}"></canvas>
    `;

    QRCode.toCanvas(this.shadowRoot.querySelector('canvas'), data, {
      width: size
    });
  }
}

customElements.define('qr-code', QRCodeElement);

使用方式:

<qr-code data="https://example.com" size="150"></qr-code>

注意事项

实际生产环境中建议使用成熟的二维码库,因为完整的二维码生成算法需要考虑:

  • 不同版本的数据容量
  • 纠错级别(L/M/Q/H)
  • 掩码模式选择
  • 格式和版本信息编码
  • 最佳数据编码方式选择

对于简单需求,QRCode.js库已经足够应对大多数场景。原生实现仅适用于学习目的或非常简单的演示场景。

标签: 二维码js
分享给朋友:

相关文章

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…