H5掃描二維碼相關實現

????????H5? Web網頁實現掃一掃識別解析二維碼,就現在方法的npm包就能實現,在這個過程中使用過html5-qrcode 和 vue3-qr-reader。

1、html5-qrcode的使用

? ? ? ?感覺html5-qrcode有點小坑,在使用的時候識別不成功還總是進入到錯誤回調中出現類似NotFoundException: No MultiFormat Readers were able to detect the ....的錯誤,后面去到官網GitHub上看到有人說是版本問題,降到指定版本之后,一開始沒有問題也可以識別了,奇怪的是,過一個星期直接噶了😭。。。(感覺不是很穩定,如果有不同見解可以交流一下)

html5-qrcode 的具體使用參考html5-qrcode

2、vue3-qr-reader的使用

vue3-qr-reader 是繼 html5-qrcode 找到的第二種方案,這個相對來說比較穩定使用方式簡單:

? ? ? ? 1、vue3項目中下載vue3-qr-reader包

npm install vue3-qr-reader// 或者npm i vue3-qr-reader

? ? ? ? ?2、在項目中引用需要使用的組件,在頁面t使用組件

<template><van-button @click="openQrcode" color="rgba(0, 0, 0, 0.3)"style="border-color: rgba(255, 255, 255, 0.4)">掃一掃</van-button><-- 掃碼頁面內容 !--><div class="reader-box" v-if="isScaning"><div class="line"></div><qr-stream @decode="onDecode" class="mb"><div class="frame" style="color: red;"></div></qr-stream><div class="desc">掃描激活二維碼</div><van-button @click="closeQrcode" color="rgba(0, 0, 0, 0.3)"style="border-color: rgba(255, 255, 255, 0.4)">返回</van-button></div>
</template><script setup>
// 引入依賴
import { QrStream } from "vue3-qr-reader"// ...const isScaning = ref(false)// 開啟掃碼
const openQrcode = ()=>{isScaning.value = true
}
// 關閉掃碼
const closeQrcode = ()=> {isScaning.value = false
}// 處理掃碼成功后相關的業務內容
const onDecode = (data)=>{try{// data 為掃碼結果 對data做相關處理進行下一步操作}catch(err){closeQrcode()showNotify({type:'danger',message:'掃碼失敗,請聯系管理員'})}
}
</script>
/* 相關樣式 */
.reader-box {position: fixed;top: 0;bottom: 0;left: 0;right: 0;width: 100vw;height: 100vh;background-color: rgba(0, 0, 0, 0.9);z-index: 999;display: flex;justify-content: center;align-items: center;flex-direction: column;
}
.reader-box .desc {position: fixed;bottom: 140px;font-family: PingFang SC, PingFang SC;font-weight: bold;font-size: 15px;color: #ffffff;margin-top: 16px;
}
.reader-box .van-button {position: absolute;bottom: 70px;width: 90%;border: 1px solid #fff;
}
.line {position: absolute;top: 180px;width: 100%;animation: radar-beam 2s infinite;animation-timing-function: cubic-bezier(0.53, 0, 0.43, 0.99);animation-delay: 1.4s;z-index: 9999;height: 130px;border-bottom: 1px solid #4b66d0;background: linear-gradient(to top, #4b66d0, transparent);
}@keyframes radar-beam {0% {transform: translateY(-100%);}100% {transform: translateY(90%);}
}

最終實現效果如下

注意:因為獲取攝像頭權限,需要網頁是https的,所以在本地調試的話要開啟https,開啟https的方式,可以參考這個大佬的方式本地localhost開啟https通過軟件及命令生成證書,并將證書放入到vue項目中,在vite.config.js的配置中加入并保存即可

import vue from '@vitejs/plugin-vue';
import { defineConfig, loadEnv } from 'vite';
import Components from 'unplugin-vue-components/vite';
import { VantResolver } from 'unplugin-vue-components/resolvers';
const fs = require('fs');export default ({ mode }) =>defineConfig({plugins: [vue(),Components({resolvers: [VantResolver()],}),],css: {postcss: {plugins: [require('postcss-pxtorem')({rootValue: 50,propList: ['*'],selectorBlackList: ['.van-'],}),],},},base: './',server: {host: '0.0.0.0',// port: import.meta.VITE_PORT,port: loadEnv(mode, process.cwd()).VITE_PORT,// open: import.meta.VITE_OPEN,proxy: {'/api': {target: 'https://xxx.com/',ws: true,changeOrigin: true,rewrite: (path) => path.replace(/^\/api/, ''),},},https: {key: fs.readFileSync('public/127.0.0.1-key.pem'),cert: fs.readFileSync('public/127.0.0.1.pem'),},},minify: 'esbuild',sourcemap: false,});

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/16352.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/16352.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/16352.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python怎樣將PDF拆分成多個文件

在 Python 中&#xff0c;你可以使用 PyPDF2 庫來拆分 PDF 文件。以下是一個簡單的示例&#xff0c;演示如何將一個 PDF 文件拆分為多個單頁 PDF 文件。 首先&#xff0c;你需要安裝 PyPDF2 庫。如果尚未安裝&#xff0c;可以使用以下命令進行安裝&#xff1a; pip install P…

天干物燥小心火燭-智慧消防可視化大屏,隱患防治于未然。

智慧消防可視化大屏通常包括以下內容&#xff1a; 1.實時監控&#xff1a; 顯示消防設備、傳感器、監控攝像頭等設備的實時狀態和數據&#xff0c;包括火災報警、煙霧報警、溫度報警等。 2.建筑結構&#xff1a; 顯示建筑物的結構圖和平面圖&#xff0c;包括樓層分布、消防通…

VLC播放器(全稱VideoLAN Client)

一、簡介 VLC播放器&#xff08;全稱VideoLAN Client&#xff09;是一款開源的多媒體播放器&#xff0c;由VideoLAN項目團隊開發。它支持多種音視頻格式&#xff0c;并能夠在多種操作系統上運行&#xff0c;如Windows、Mac OS X、Linux、Android和iOS等。VLC播放器具備播放文件…

特殊變量筆記3

輸入一個錯誤命令, 在輸出$? 特殊變量&#xff1a;$$ 語法 $$含義 用于獲取當前Shell環境的進程ID號 演示 查看當前Shell環境進程編號 ps -aux|grep bash輸出 $$ 顯示當前shell環境進程編號 小結 常用的特殊符號變量如下 特殊變量含義$n獲取輸入參數的$0, 獲取當前She…

hugging face筆記:PEFT

1 介紹 PEFT (Parameter-Efficient Fine Tuning) 方法在微調時凍結預訓練模型參數&#xff0c;并在其上添加少量可訓練的參數&#xff08;稱為適配器&#xff09;這些適配器被訓練用來學習特定任務的信息。這種方法已被證明在內存效率和計算使用上非常高效&#xff0c;同時能產…

線性模型--普通最小二乘法

線性模型 一、模型介紹二、用于回歸的線性模型2.1 線性回歸&#xff08;普通最小二乘法&#xff09; 一、模型介紹 線性模型是在實踐中廣泛使用的一類模型&#xff0c;該模型利用輸入特征的線性函數進行預測。 二、用于回歸的線性模型 以下代碼可以在一維wave數據集上學習參…

基于51單片機的超聲波液位測量與控制系統

基于51單片機液位控制器 &#xff08;仿真&#xff0b;程序&#xff0b;原理圖PCB&#xff0b;設計報告&#xff09; 功能介紹 具體功能&#xff1a; 1.使用HC-SR04測量液位&#xff0c;LCD1602顯示&#xff1b; 2.當水位高于設定上限的時候&#xff0c;對應聲光報警報警&am…

手機卡該地塊

package demo; package demo; public class Phonetest { public static void main(String[] args) { Phone pnew Phone(); p.brand"小米"; p.price1998.98; System.out.println(…

在業務開發中使用ElasticSearch的指導手冊

文章目錄 該業務為什么需要ElasticSearch? / 該業務需要ElasticSearch的核心功能是哪些&#xff1f;正確示例錯誤示例 如何快速驗證分詞是否能夠滿足業務需求&#xff1f;分詞不滿足&#xff0c;如何自定義分詞&#xff1f; 業務數據的字段類型映射是否合理&#xff1f;實踐中…

MySQL設置表自增步長

在MySQL數據庫管理中&#xff0c;自增字段&#xff08;AUTO_INCREMENT&#xff09;是一種常見且重要的功能&#xff0c;通常用于生成唯一的標識符&#xff08;如主鍵&#xff09;。然而&#xff0c;在多種應用場景下&#xff0c;默認的自增步長&#xff08;1&#xff09;可能無…

【InternLM實戰營第二期筆記】02:大模型全鏈路開源體系與趣味demo

文章目錄 00 環境設置01 部署一個 chat 小模型02 Lagent 運行 InternLM2-chat-7B03 浦語靈筆2 第二節課程視頻與文檔&#xff1a; https://www.bilibili.com/video/BV1AH4y1H78d/ https://github.com/InternLM/Tutorial/blob/camp2/helloworld/hello_world.md 視頻和文檔內容基…

003 CentOS 7.9 mysql8.3.0安裝及配置

文章目錄 Windows PowerShell測試端口安裝及配置1. 下載MySQL安裝包2. 解壓安裝包3. 安裝MySQL4. 啟動MySQL服務5. 獲取并設置MySQL root密碼6. 創建數據庫7. 配置遠程連接&#xff08;可選&#xff09; 卸載mysql檢查并卸載已有的MySQL或MariaDB&#xff1a; https://download…

云計算和大數據處理

文章目錄 1.云計算基礎知識1.1 基本概念1.2 云計算分類 2.大數據處理基礎知識2.1 基礎知識2.3 大數據處理技術 1.云計算基礎知識 1.1 基本概念 云計算是一種提供資源的網絡&#xff0c;使用者可以隨時獲取“云”上的資源&#xff0c;按需求量使用&#xff0c;并且可以看成是無…

AWS安全性身份和合規性之WAF(Web Application Firewall)

AWS WAF&#xff08;Web Application Firewall&#xff09;是一項AWS托管的網絡安全服務&#xff0c;用于保護Web應用程序免受常見的Web攻擊&#xff0c;如SQL注入、跨站腳本&#xff08;XSS&#xff09;、跨站請求偽造&#xff08;CSRF&#xff09;等。 應用場景&#xff1a;…

STM32應用開發進階--IIC總線(SHT20溫濕度+HAL庫_硬件I2C)

實現目標 1、掌握IIC總線基礎知識&#xff1b; 2、會使用軟件模擬IIC總線和使用STM32硬件IIC總線&#xff1b; 3、 學會STM32CubeMX軟件關于IIC的配置; 4、掌握SHT20溫濕度傳感器的驅動&#xff1b; 5、具體目標&#xff1a;&#xff08;1&#xff09;用STM32硬件IIC驅動S…

49 序列化和反序列化

本章重點 理解應用層的作用&#xff0c;初識http協議 理解傳輸層的作用&#xff0c;深入理解tcp的各項特性和機制 對整個tcp/ip協議有系統的理解 對tcp/ip協議體系下的其他重要協議和技術有一定的了解 學會使用一些網絡問題的工具和方法 目錄 1.應用層 2.協議概念 3. 網絡計…

CSRF跨站請求偽造實戰

目錄 一、定義 二、與XSS的區別 三、攻擊要點 四、實戰 一、定義 CSRF (Cross-site request forgery&#xff0c;跨站請求偽造)&#xff0c;攻擊者利用服務器對用戶的信任&#xff0c;從而欺騙受害者去服務器上執行受害者不知情的請求。在CSRF的攻擊場景中&#xff0c;攻擊…

Django模板層——模板引擎配置

作為Web 框架&#xff0c;Django 需要一種很便利的方法以動態地生成HTML。最常見的做法是使用模板。 模板包含所需HTML 輸出的靜態部分&#xff0c;以及一些特殊的語法&#xff0c;描述如何將動態內容插入。 模板引擎配置 模板引擎使用該TEMPLATES設置進行配置。這是一個配置列…

C++數據結構——哈希桶HashBucket

目錄 一、前言 1.1 閉散列 1.2 開散列 1.3 string 與 非 string 二、哈希桶的構成 2.1 哈希桶的節點 2.2 哈希桶類 三、 Insert 函數 3.1 無需擴容時 3.2 擴容 復用 Insert&#xff1a; 逐個插入&#xff1a; 優缺點比對&#xff1a; 第一種寫法優點 第一種寫法…

gfast:基于全新Go Frame 2.3+Vue3+Element Plus構建的全棧前后端分離管理系統

gfast&#xff1a;基于全新Go Frame 2.3Vue3Element Plus構建的全棧前后端分離管理系統 隨著信息技術的飛速發展和數字化轉型的深入&#xff0c;后臺管理系統在企業信息化建設中扮演著越來越重要的角色。為了滿足市場對于高效、靈活、安全后臺管理系統的需求&#xff0c;gfast應…