vue实现扫描二维码
实现 Vue 扫描二维码功能
在 Vue 中实现扫描二维码功能,可以通过第三方库或原生 API 完成。以下是两种常见方法:
使用 vue-qrcode-reader 库
vue-qrcode-reader 是一个专为 Vue 设计的二维码扫描库,基于 WebRTC 实现摄像头调用。
安装依赖:

npm install vue-qrcode-reader
组件示例:
<template>
<div>
<qrcode-stream @decode="onDecode"></qrcode-stream>
<p>扫描结果: {{ result }}</p>
</div>
</template>
<script>
import { QrcodeStream } from 'vue-qrcode-reader'
export default {
components: { QrcodeStream },
data() {
return { result: '' }
},
methods: {
onDecode(decodedString) {
this.result = decodedString
}
}
}
</script>
使用 zxing-js/library
如果需要更多自定义控制,可以使用通用 JavaScript 二维码库。

安装依赖:
npm install @zxing/library
实现代码:
<template>
<div>
<video ref="video" width="300" autoplay></video>
<button @click="startScan">开始扫描</button>
<p>结果: {{ result }}</p>
</div>
</template>
<script>
import { BrowserQRCodeReader } from '@zxing/library'
export default {
data() {
return {
codeReader: new BrowserQRCodeReader(),
result: ''
}
},
methods: {
async startScan() {
try {
const result = await this.codeReader.decodeFromVideoDevice(
null,
this.$refs.video,
(result) => {
if (result) this.result = result.getText()
}
)
} catch (error) {
console.error(error)
}
}
}
}
</script>
注意事项
- 确保应用运行在 HTTPS 环境,大多数浏览器要求安全上下文才能访问摄像头
- 移动端设备可能需要处理横竖屏适配问题
- 首次使用时需要请求摄像头权限
- 考虑添加加载状态和错误处理
扩展功能
对于高级需求,可以添加以下功能:
- 多二维码同时识别
- 扫描区域限制
- 自定义界面样式
- 扫描成功音效反馈
两种方法各有优势,vue-qrcode-reader 更适合快速集成,而 zxing 提供更多底层控制。根据项目需求选择合适方案。






