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 属性
  }
});

七、欢迎交流指正

相关推荐
panxianren4 小时前
Bun 1.4 的 bun test --parallel 将 4 秒的测试套件缩短到约 1 秒
java·javascript
陈随易5 小时前
bm2,Node.js 与 Bun 项目部署新选择
前端·后端·程序员
可乐鸡翅yeah_7 小时前
FFmpeg 生成 HLS 独立分片 independent‑segments 参数到底有什么用
javascript·ffmpeg·音视频·safari·m3u8
福兮说7 小时前
canvas 旋转图片的六个坑:四角被裁、Math.ceil 多出 1px 黑边、JPG 角发黑、翻转方向反了
前端·javascript·图像处理·canvas
Ai-_Man8 小时前
您您这可以把Grok的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭
javascript·人工智能·ai·小程序·电脑
传人once8 小时前
多图片上传预览功能如何写
前端·css·html·jquery·html5
Eric.469 小时前
Wan‑Animate+MiniMax-H3 本地部署 AI 漫剧流水线:8G 显存动作迁移与动态分镜工程实战
前端·人工智能·comfyui·ai漫剧
liangshanbo12159 小时前
JavaScript 异步核心主线
javascript·事件循环·异步操作
传人once10 小时前
悬停旋转放大和位移效果如何写
javascript·css·动画
库拉镜像AI牛牛10 小时前
短剧内容自动化生产:知漫剧工作室落地教程
大数据·服务器·前端·人工智能·语音识别