最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Vue實(shí)現(xiàn)鏈接生成二維碼并支持下載

 更新時(shí)間:2024年03月05日 10:14:16   作者:小白Coding日志  
在現(xiàn)代 Web 應(yīng)用中,快速分享鏈接是一項(xiàng)常見(jiàn)需求,二維碼作為一種簡(jiǎn)潔的分享方式,受到了廣泛歡迎,所以本文將介紹如何使用 Vue 純前端技術(shù)實(shí)現(xiàn)動(dòng)態(tài)生成鏈接二維碼的方法,需要的可以參考下

在現(xiàn)代 Web 應(yīng)用中,快速分享鏈接是一項(xiàng)常見(jiàn)需求。二維碼作為一種簡(jiǎn)潔的分享方式,受到了廣泛歡迎。如何在 Vue.js 中實(shí)現(xiàn)前端生成鏈接二維碼的功能,成為了許多開(kāi)發(fā)者關(guān)注的焦點(diǎn)。本文將介紹如何使用 Vue 純前端技術(shù)實(shí)現(xiàn)動(dòng)態(tài)生成鏈接二維碼的方法,無(wú)需后端參與。

本項(xiàng)目基于Vite+Vue3,這里假設(shè)你已經(jīng)搭建好項(xiàng)目了前端頁(yè)面使用el-input+el-popover來(lái)實(shí)現(xiàn)

為了在應(yīng)用程序中實(shí)現(xiàn)鏈接生成二維碼的功能,我們需要依賴一個(gè)npm 包qrcode.vue。這個(gè)包提供了一個(gè)簡(jiǎn)單而強(qiáng)大的方法,讓我們能夠輕松地在 Vue.js 應(yīng)用程序中生成二維碼,無(wú)需編寫冗長(zhǎng)復(fù)雜的代碼,極大地簡(jiǎn)化了開(kāi)發(fā)流程,提高了開(kāi)發(fā)效率。

具體屬性配置可以查看qrcode.vue官方文檔:github.com/scopewu/qrcode.vue

安裝

npm install --save qrcode.vue

在需要使用的文件中引入qrcode

<script setup>
import QrcodeVue from 'qrcode.vue'
const level = ref('M')
const renderAs = ref('svg')
import { ref } from 'vue'
const link = ref('https://www.mi.com/')
const onQRCode = () =>{}
</script>

<template>
  <h1>前端實(shí)現(xiàn)鏈接生成二維碼</h1>
  <el-input v-model="link" placeholder="Please input" style="width: 400px;">
      <template #append>
        <el-popover
        placement="bottom"
        :width="160"
        trigger="click"
      >
        <template #reference>
          <div class="qrcode">二維碼</div>
        </template>
        <template #default>
          <div class="code-container">
            <div class="title">掃描二維碼,分享此鏈接</div>
            <qrcode-vue id="svgRef" :value="link" :size="120" :level="level" :render-as="renderAs" />
            <el-button icon="sc-icon-ImportsIcon" style="width: 120px;margin-top: 10px;" class="m-t10" size="small" @click="downloadQrCode">下載</el-button>
          </div>
        </template>
      </el-popover>
      </template>
  </el-input>
</template>

<style scoped>
.code-container {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
.qrcode {
  cursor: pointer;
}
.title {
  font-size: 12px;
  color: #8e939c;
  margin-bottom: 5px;
}
</style>

效果如下

下載二維碼代碼實(shí)現(xiàn)

/* 下載二維碼 */
const downloadQrCode = () =>{
    const node = document.getElementById('svgRef')
    covertSVG2Image(node, '掃描二維碼,分享此鏈接', 120, 120)
};
/**
 * 將svg導(dǎo)出成圖片
 * @param node svg節(jié)點(diǎn) => document.querySelector('svg')
 * @param name 生成的圖片名稱
 * @param width 生成的圖片寬度
 * @param height 生成的圖片高度
 * @param type 生成的圖片類型
 */
const covertSVG2Image = (node, name, width, height, type = 'png') => {
  let serializer = new XMLSerializer()
  let source = '<?xml version="1.0" standalone="no"?>\r\n' + serializer.serializeToString(node)
  let image = new Image()
  image.src = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(source)
  let canvas = document.createElement('canvas')
  canvas.width = width
  canvas.height = height
  let context = canvas.getContext('2d')
  context.fillStyle = '#fff'
  context.fillRect(0, 0, 10000, 10000)
  image.onload = function () {
    context.drawImage(image, 0, 0)
    let a = document.createElement('a')
    a.download = `${name}.${type}`
    a.href = canvas.toDataURL(`image/${type}`)
    a.click()
  }
}

下載的二維碼

以上所述即是如何在前端實(shí)現(xiàn)二維碼生成以及支持下載的完整方案。

到此這篇關(guān)于詳解Vue實(shí)現(xiàn)鏈接生成二維碼并支持下載的文章就介紹到這了,更多相關(guān)Vue鏈接生成二維碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue中如何使用jest單元測(cè)試

    vue中如何使用jest單元測(cè)試

    這篇文章主要介紹了vue中如何使用jest單元測(cè)試,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue3+Vite實(shí)現(xiàn)一個(gè)Markdown編輯器組件

    Vue3+Vite實(shí)現(xiàn)一個(gè)Markdown編輯器組件

    在現(xiàn)代前端開(kāi)發(fā)中,Markdown 編輯器廣泛應(yīng)用于博客,文檔,Wiki,代碼注釋等場(chǎng)景,本文將使用 Vue 3 構(gòu)建一個(gè)簡(jiǎn)單的 Markdown 編輯器組件,感興趣的小伙伴可以了解下
    2025-04-04
  • 簡(jiǎn)單談?wù)刅ue 模板各類數(shù)據(jù)綁定

    簡(jiǎn)單談?wù)刅ue 模板各類數(shù)據(jù)綁定

    Vue.js 的模板是基于 DOM 實(shí)現(xiàn)的。這意味著所有的 Vue.js 模板都是可解析的有效的 HTML,且通過(guò)一些特殊的特性做了增強(qiáng)。Vue 模板因而從根本上不同于基于字符串的模板,請(qǐng)記住這點(diǎn)。
    2016-09-09
  • Vue3中使用富文本編輯器的示例詳解

    Vue3中使用富文本編輯器的示例詳解

    有不少的前端需求都需要使用到富文本編輯器,所以這篇文章主要來(lái)和大家介紹一下如何在Vue3項(xiàng)目中使用富文本編輯器,感興趣的可以了解下
    2024-04-04
  • el-date-picker默認(rèn)結(jié)束為當(dāng)前時(shí)分秒的操作方法

    el-date-picker默認(rèn)結(jié)束為當(dāng)前時(shí)分秒的操作方法

    在element?ui中的日期時(shí)間選擇組件中默認(rèn)是00:00,現(xiàn)在需求是點(diǎn)擊默認(rèn)結(jié)束時(shí)間為當(dāng)前時(shí)分秒,查了很多資料寫的都不準(zhǔn)確?,今天給大家分享el-date-picker默認(rèn)結(jié)束為當(dāng)前時(shí)分秒的操作方法,感興趣的朋友一起看看吧
    2024-01-01
  • vue實(shí)現(xiàn)百度語(yǔ)音合成的實(shí)例講解

    vue實(shí)現(xiàn)百度語(yǔ)音合成的實(shí)例講解

    在本篇文章里小編給大家整理的是關(guān)于vue實(shí)現(xiàn)百度語(yǔ)音合成的實(shí)例內(nèi)容,以及相關(guān)代碼,需要的朋友們參考下。
    2019-10-10
  • Vue指令之 v-cloak、v-text、v-html實(shí)例詳解

    Vue指令之 v-cloak、v-text、v-html實(shí)例詳解

    當(dāng)用戶頻繁刷新頁(yè)面或網(wǎng)速慢時(shí),頁(yè)面未完成 Vue.js 的加載時(shí),導(dǎo)致 Vue 來(lái)不及渲染,這就會(huì)導(dǎo)致在瀏覽器中直接暴露插值(表達(dá)式),這篇文章主要介紹了Vue指令 v-cloak、v-text、v-html,需要的朋友可以參考下
    2019-08-08
  • ant-design-vue 快速避坑指南(推薦)

    ant-design-vue 快速避坑指南(推薦)

    ant-design-vue是螞蟻金服 Ant Design 官方唯一推薦的Vue版UI組件庫(kù),它其實(shí)是Ant Design的Vue實(shí)現(xiàn),組件的風(fēng)格與Ant Design保持同步,組件的html結(jié)構(gòu)和css樣式也保持一致,很多朋友在使用過(guò)程中遇到很多問(wèn)題,今天小編就給大家分享一篇教程幫助大家快速閉坑,一起看看吧
    2020-01-01
  • Vue中key的原理以及diff算法詳解

    Vue中key的原理以及diff算法詳解

    這篇文章主要介紹了Vue中key的原理以及diff算法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 淺析vue深復(fù)制

    淺析vue深復(fù)制

    這篇文章主要介紹了vue深復(fù)制的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2018-01-01

最新評(píng)論

广宗县| 隆回县| 林甸县| 石屏县| 和田市| 徐闻县| 河曲县| 鹤岗市| 嘉兴市| 永州市| 聂拉木县| 织金县| 蓝田县| 正蓝旗| 蓬溪县| 重庆市| 乾安县| 天津市| 东乌| 会同县| 乐清市| 大石桥市| 三门峡市| 易门县| 增城市| 乌拉特中旗| 惠州市| 上杭县| 浦县| 冷水江市| 临泽县| 太保市| 祁连县| 曲靖市| 偏关县| 鱼台县| 通州区| 枞阳县| 仁化县| 忻城县| 霍林郭勒市|