vue3-ts-qrcode :安装及使用记录 / 配置项 / 效果展示

一、安装 qrcode 库

复制代码
pnpm install qrcode

二、解决类型声明问题

复制代码
pnpm install --save-dev @types/qrcode

三、集成组件

复制代码
<template>
  <div>
    <canvas ref="canvasRef"></canvas>
    <!-- 或者使用 img 标签 -->
    <!-- <img :src="qrCodeImage" alt="QR Code" /> -->
  </div>
</template>

<script setup lang="ts">
import { ref, onMounted } from 'vue';
import QRCode from 'qrcode';

const canvasRef = ref<HTMLCanvasElement | null>(null);
// 如果使用 img 标签,可以这样定义
// const qrCodeImage = ref('');

onMounted(() => {
  if (canvasRef.value) {
    QRCode.toCanvas(
      canvasRef.value,
      'https://www.example.com', // 要生成二维码的内容
      {
        width: 200, // 二维码宽度
      },
      (error) => {
        if (error) {
          console.error('生成二维码失败:', error);
        } else {
          console.log('二维码生成成功');
        }
      }
    );
  }

  // 如果使用 img 标签,可以这样生成 data URL
  // QRCode.toDataURL(
  //   'https://www.example.com',
  //   {
  //     width: 200,
  //   },
  //   (error, url) => {
  //     if (error) {
  //       console.error('生成二维码失败:', error);
  //     } else {
  //       qrCodeImage.value = url;
  //     }
  //   }
  // );
});
</script>

四、页面使用

复制代码
<template>
  <m-qrcode/>
</template>

<script setup lang="ts">

// 事件 暂无需要

// 数据
const data = ref({
  qrcode: 'hello'
})
// 配置/模板
const config: any = {
  type: 'qrcode',
  label: '二维码', // item的名字--用于展示
  field: 'qrcode', // 字段--用于提交数据
  style: {
    // 样式--具体的样式
    width: '200px', // 宽度--具体的样式
    height: '200px' // 高度--具体的样式
  },
  rules: [], // 校验规则
  attrs: {
    // 属性--具体的属性
    show: true, // 是否显示item
    required: true, // 是否必填
    placeholder: '', // 占位符
    disabled: false, // 是否禁用
  }
}
</script>

<style scoped>
</style>

五、展示效果

六、qrcode 配置选项

配置选项 类型 默认值 说明
version number 自动选择 二维码的版本(尺寸),范围从 1 到 40。如果不指定,库会自动选择合适的版本。
errorCorrectionLevel string 'L' 纠错级别,可选值有: - 'L':7% 的字码可被修复。 - 'M':15% 的字码可被修复。 - 'Q':25% 的字码可被修复。 - 'H':30% 的字码可被修复。
type string 'canvas'toCanvas)或 'image/png'toDataURL 生成的二维码类型,对于 toCanvas 通常是 'canvas',对于 toDataURL 通常是 'image/png',也可以是其他图像格式如 'image/jpeg'
width number 自动计算 二维码的宽度(像素)。如果不指定,库会根据内容和版本自动计算。
height number 自动计算 二维码的高度(像素)。如果不指定,库会根据内容和版本自动计算。
color.dark string '#000000' 二维码模块(黑色部分)的颜色,可以是十六进制颜色码、RGB 或其他 CSS 颜色值。
color.light string '#ffffff' 二维码背景(白色部分)的颜色,可以是十六进制颜色码、RGB 或其他 CSS 颜色值。
margin number 4 二维码周围的空白边距(模块数量的倍数)。
scale number 1 缩放比例,用于调整二维码的尺寸。
quality number 0.925 type'image/jpeg' 时,用于设置 JPEG 图像的质量,范围从 0 到 1。
复制代码
import QRCode from 'qrcode';

const options = {
  version: 5,
  errorCorrectionLevel: 'H',
  type: 'image/png',
  width: 300,
  color: {
    dark: '#000000',
    light: '#ffffff',
  },
  margin: 2,
};

QRCode.toDataURL('hello', options, (error, url) => {
  if (error) {
    console.error('生成二维码失败:', error);
  } else {
    console.log('二维码生成成功:', url);
    // 可以将 url 设置为 img 标签的 src 属性
  }
});

七、欢迎交流指正

相关推荐
技术钱1 天前
vue3 封装图片上传预览组件支持docx、excel、pdf、图片、txt格式
vue.js·pdf·excel
kyle~1 天前
C++--- override 关键字 强制编译器验证当前函数是否重写基类的虚函数
java·前端·c++
Light601 天前
像素退场,曲线登场:现代响应式 CSS 全家桶 | 领码课堂
前端·css·响应式设计·css函数·布局系统·相对单位·设计令牌
爱生活的苏苏1 天前
elementUI 表单验证-联动型校验
前端·javascript·elementui
一只小风华~1 天前
Vue Router 路由元信息(meta)详解
前端·javascript·vue.js
*且听风吟1 天前
html 实现鼠标滑动点亮横轴
前端·javascript·html
计算机学姐1 天前
基于微信小程序的垃圾分类管理系统【2026最新】
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis
武昌库里写JAVA1 天前
C语言 #pragma once - C语言零基础入门教程
vue.js·spring boot·sql·layui·课程设计
iCoding911 天前
前端分页 vs 后端分页:技术选型
前端·后端·系统架构
mingtianyihou331 天前
使用 Service Worker 限制请求并发数
前端