使用 Vue 3 和 qrcode.js 开发二维码显示组件

二维码在现代应用中广泛使用,例如支付、身份验证、链接分享等。本文将介绍如何使用 Vue 3 和 qrcode.js 库来创建一个灵活的二维码显示组件,并展示如何在应用中使用它。

1. 安装必要的依赖

首先,我们需要安装 Vue 3 和 qrcode.js。如果你还没有创建 Vue 3 项目,可以使用 Vue CLI 快速创建一个新项目:

复制代码
npm install -g @vue/cli
vue create qrcode-app
cd qrcode-app

然后,安装 qrcode.js:

复制代码
npm install qrcode

2. 创建 QrCodeGenerator 组件

接下来,我们创建一个名为 QrCodeGenerator 的组件,用于生成和显示二维码。

QrCodeGenerator.vue
html 复制代码
<template>
  <div>
    <canvas ref="qrcode"></canvas>
  </div>
</template>

<script setup>
import { ref, onMounted, watch } from 'vue';
import QRCode from 'qrcode';

const props = defineProps({
  value: {
    type: String,
    required: true,
  },
  size: {
    type: Number,
    default: 200,
  },
  level: {
    type: String,
    default: 'M',
    validator: (value) => ['L', 'M', 'Q', 'H'].includes(value),
  },
});

const qrcode = ref(null);

const generateQrCode = () => {
  if (qrcode.value) {
    QRCode.toCanvas(qrcode.value, props.value, {
      width: props.size,
      errorCorrectionLevel: props.level,
    }, (error) => {
      if (error) console.error(error);
    });
  }
};

onMounted(generateQrCode);

watch(() => props.value, generateQrCode);
watch(() => props.size, generateQrCode);
watch(() => props.level, generateQrCode);
</script>

3. 在应用中使用 QrCodeGenerator 组件

现在,我们可以在应用中使用 QrCodeGenerator 组件。我们将创建一个示例页面,展示不同大小和纠错级别的二维码。

App.vue
html 复制代码
<template>
  <div id="app">
    <h1>二维码示例</h1>
    <QrCodeGenerator value="https://www.example.com" size="100" level="L"></QrCodeGenerator>
    <QrCodeGenerator value="https://www.example.com" size="200" level="M"></QrCodeGenerator>
    <QrCodeGenerator value="https://www.example.com" size="300" level="Q"></QrCodeGenerator>
    <QrCodeGenerator value="https://www.example.com" size="400" level="H"></QrCodeGenerator>
  </div>
</template>

<script setup>
import QrCodeGenerator from './components/QrCodeGenerator.vue';
</script>

4. 运行应用

确保你的项目设置正确,然后运行应用:

html 复制代码
npm run serve

访问你的应用,你应该会看到一系列不同大小和纠错级别的二维码。

详细解释

组件定义和道具验证

QrCodeGenerator 组件中,我们定义了三个道具:valuesizelevelvalue 是必需的字符串道具,用于生成二维码的数据。size 是可选的数字道具,指定二维码的大小,默认值为 200。level 是可选的字符串道具,指定二维码的纠错级别,默认值为 M,支持 L(低)、M(中)、Q(四分之一)、H(高)四种级别。为了确保传入的纠错级别是有效的,我们使用了 validator 函数进行验证。

二维码生成逻辑

我们使用 Vue 3 的组合式 API(<script setup> 语法糖)来定义组件的逻辑。在 setup 函数中,我们创建了一个对 Canvas 元素的引用,并定义了 generateQrCode 函数来生成二维码。在组件挂载时(onMounted)以及每次道具变化时(通过 watch 监听道具变化),都会调用 generateQrCode 函数。

应用中的使用

App.vue 中,我们引入并使用了 QrCodeGenerator 组件,并传递了不同的 valuesizelevel 值来展示各种大小和纠错级别的二维码。

相关推荐
mCell5 小时前
GSAP ScrollTrigger 详解
前端·javascript·动效
gnip5 小时前
Node.js 子进程:child_process
前端·javascript
excel8 小时前
为什么在 Three.js 中平面能产生“起伏效果”?
前端
excel9 小时前
Node.js 断言与测试框架示例对比
前端
天蓝色的鱼鱼11 小时前
前端开发者的组件设计之痛:为什么我的组件总是难以维护?
前端·react.js
codingandsleeping11 小时前
使用orval自动拉取swagger文档并生成ts接口
前端·javascript
石金龙12 小时前
[译] Composition in CSS
前端·css
白水清风12 小时前
微前端学习记录(qiankun、wujie、micro-app)
前端·javascript·前端工程化
Ticnix12 小时前
函数封装实现Echarts多表渲染/叠加渲染
前端·echarts
用户221520442780012 小时前
new、原型和原型链浅析
前端·javascript