详解Vue实现链接生成二维码并支持下载

 更新时间:2024年03月05日 10:14:16   作者:小白Coding日志  
在现代 Web 应用中,快速分享链接是一项常见需求,二维码作为一种简洁的分享方式,受到了广泛欢迎,所以本文将介绍如何使用 Vue 纯前端技术实现动态生成链接二维码的方法,需要的可以参考下

在现代 Web 应用中,快速分享链接是一项常见需求。二维码作为一种简洁的分享方式,受到了广泛欢迎。如何在 Vue.js 中实现前端生成链接二维码的功能,成为了许多开发者关注的焦点。本文将介绍如何使用 Vue 纯前端技术实现动态生成链接二维码的方法,无需后端参与。

本项目基于Vite+Vue3,这里假设你已经搭建好项目了前端页面使用el-input+el-popover来实现

为了在应用程序中实现链接生成二维码的功能,我们需要依赖一个npm 包qrcode.vue。这个包提供了一个简单而强大的方法,让我们能够轻松地在 Vue.js 应用程序中生成二维码,无需编写冗长复杂的代码,极大地简化了开发流程,提高了开发效率。

具体属性配置可以查看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>前端实现链接生成二维码</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>

效果如下

下载二维码代码实现

/* 下载二维码 */
const downloadQrCode = () =>{
    const node = document.getElementById('svgRef')
    covertSVG2Image(node, '扫描二维码,分享此链接', 120, 120)
};
/**
 * 将svg导出成图片
 * @param node svg节点 => 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()
  }
}

下载的二维码

以上所述即是如何在前端实现二维码生成以及支持下载的完整方案。

到此这篇关于详解Vue实现链接生成二维码并支持下载的文章就介绍到这了,更多相关Vue链接生成二维码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue中如何使用jest单元测试

    vue中如何使用jest单元测试

    这篇文章主要介绍了vue中如何使用jest单元测试,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Vue3+Vite实现一个Markdown编辑器组件

    Vue3+Vite实现一个Markdown编辑器组件

    在现代前端开发中,Markdown 编辑器广泛应用于博客,文档,Wiki,代码注释等场景,本文将使用 Vue 3 构建一个简单的 Markdown 编辑器组件,感兴趣的小伙伴可以了解下
    2025-04-04
  • 简单谈谈Vue 模板各类数据绑定

    简单谈谈Vue 模板各类数据绑定

    Vue.js 的模板是基于 DOM 实现的。这意味着所有的 Vue.js 模板都是可解析的有效的 HTML,且通过一些特殊的特性做了增强。Vue 模板因而从根本上不同于基于字符串的模板,请记住这点。
    2016-09-09
  • Vue3中使用富文本编辑器的示例详解

    Vue3中使用富文本编辑器的示例详解

    有不少的前端需求都需要使用到富文本编辑器,所以这篇文章主要来和大家介绍一下如何在Vue3项目中使用富文本编辑器,感兴趣的可以了解下
    2024-04-04
  • el-date-picker默认结束为当前时分秒的操作方法

    el-date-picker默认结束为当前时分秒的操作方法

    在element ui中的日期时间选择组件中默认是00:00,现在需求是点击默认结束时间为当前时分秒,查了很多资料写的都不准确 ,今天给大家分享el-date-picker默认结束为当前时分秒的操作方法,感兴趣的朋友一起看看吧
    2024-01-01
  • vue实现百度语音合成的实例讲解

    vue实现百度语音合成的实例讲解

    在本篇文章里小编给大家整理的是关于vue实现百度语音合成的实例内容,以及相关代码,需要的朋友们参考下。
    2019-10-10
  • Vue指令之 v-cloak、v-text、v-html实例详解

    Vue指令之 v-cloak、v-text、v-html实例详解

    当用户频繁刷新页面或网速慢时,页面未完成 Vue.js 的加载时,导致 Vue 来不及渲染,这就会导致在浏览器中直接暴露插值(表达式),这篇文章主要介绍了Vue指令 v-cloak、v-text、v-html,需要的朋友可以参考下
    2019-08-08
  • ant-design-vue 快速避坑指南(推荐)

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

    ant-design-vue是蚂蚁金服 Ant Design 官方唯一推荐的Vue版UI组件库,它其实是Ant Design的Vue实现,组件的风格与Ant Design保持同步,组件的html结构和css样式也保持一致,很多朋友在使用过程中遇到很多问题,今天小编就给大家分享一篇教程帮助大家快速闭坑,一起看看吧
    2020-01-01
  • Vue中key的原理以及diff算法详解

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

    这篇文章主要介绍了Vue中key的原理以及diff算法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 浅析vue深复制

    浅析vue深复制

    这篇文章主要介绍了vue深复制的相关资料,非常不错,具有参考借鉴价值,需要的朋友参考下
    2018-01-01

最新评论