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

七、欢迎交流指正

相关推荐
思码梁田4 小时前
CSS display 属性:从元素类型转换到隐藏元素的实用指南
前端·css·display·inline·block·none·inline-block
Csvn4 小时前
⚡ Vite 依赖预构建(optimizeDeps)的 3 个经典坑:改了源码不生效、新增依赖 404、缓存怎么清都不行
前端
A24207349304 小时前
Vue3 + TypeScript:后端数据在表格内渲染后进行增删改的完整实现步骤
前端·javascript·typescript
他们叫我 悦儿遥遥雨5 小时前
.NET 8 Web开发入门(六):Blazor 全栈开发——告别 JavaScript 焦虑
前端·javascript·.net
用户2181697049305 小时前
Flutter(九)StatelessWidget StatefullWidget
前端
paopaokaka_luck5 小时前
基于springboot3+vue3的乡村医生诊疗管理系统(AI助手、协同过滤算法、webSocket实时聊天、Echarts图形化分析)
前端·网络·人工智能·spring boot·websocket·网络协议·echarts
编程风暴5 小时前
3类人群的数据分析实习类型选择+4条选错红线
java·前端·数据分析
其美杰布-富贵-李5 小时前
Vue 3 模块导入教程:import、export 与文件组织
前端·javascript·vue.js
Bigger5 小时前
堆了 20 套主题、10+ 组件,用户还是用不出来?我给设计 Skill 加了「自动驾驶」
前端·ai编程·视觉设计
weipt5 小时前
springboot项目运行的几种方式
javascript·css·html