这是一个自己封装的组件

市面上还有其他组件:

vue-qr :这个可以给二维码中间加图片

本次封装组件的实例图如下:

下载qrcodde

npm i qrcode -S

下载复制的插件

npm i vue-clipboard2 -S

QRcode.vue组件

<comment># 组件注释这是一个公用组件v-clipboard:下载的一个插件
</comment>
<template><div id="QRCode" :style="{'width':width, 'height':height}"><canvas :id="canvasId" :style="{'width':width, 'height':height}"></canvas><div class="flex jc-center"><el-buttontype="text"v-if="copy"v-clipboard:copy="content"v-clipboard:success="onCopy"v-clipboard:error="onError">复制链接</el-button><el-button class="configBtn" type="text" size="" @click="download" v-if="download">下载二维码</el-button></div></div>
</template>
<script>
import QRCode from "qrcode";
import VueClipboard from "vue-clipboard2";
export default {name: "QRCode",props: {canvasId: {type: String,default: "canvasId"},content: {// 二维码中存储的信息type: String,default: "测试二维码"},width: {type: String,default: "200"},height: {type: String,default: "200"},download: {type: Boolean,default: false},copy: {type: Boolean,default: false},downloadParam: { // 下载的参数type: Object,default() {return {width: 200,height: 200,name: "二维码" // 下载之后的文件名};}},view: {type: Boolean,default: true}},data() {return {};},computed: {},created() {this.$nextTick(() => {this.init();});},mounted() {},methods: {init() {let width = this.width,height = this.height;QRCode.toCanvas(document.getElementById(this.canvasId),this.content,{ width, height, toSJISFunc: QRCode.toSJIS },error => {});},onCopy: function(e) {this.$message({message: `复制成功!`,type: "success"});},onError: function(e) {alert("复制失败");},// 下载二维码download() {const ele = document.createElement("canvas");ele.style.width = this.downloadParam.width || "200" + "px";ele.style.height = this.downloadParam.height || "200" + "px";QRCode.toCanvas(ele,this.content,{width: this.downloadParam.width || "200",height: this.downloadParam.height || "200",toSJISFunc: QRCode.toSJIS},error => {});let [F, S, a] = [navigator.userAgent.indexOf("Firefox") > -1,ele.toDataURL("image/png"),document.createElement("a")];[a.href, a.download] = [S, this.downloadParam.name];if (F) {let evt = document.createEvent("MouseEvents");evt.initEvent("click", true, true);a.dispatchEvent(evt);} else {a.click();}}},watch: {content(val) {this.init();}}
};
</script>
<style lang="scss" scoped>
#QRCode {display: inline-block;position: relative;overflow: hidden;
}</style>

使用上面的组件生成二维码

<template><div id="QRcode_gr"><QRcodewidth="200"height="200":content="content":load="true":copy="false":downloadParam="{width: 200,height: 200,name: '二维码'}"></QRcode></div>
</template>
<script>
import QRcode from "@/components/common/QRcode";
export default {name: '',components: {QRcode },props: {},data() {return {content: 'www.baidu.com',name: ''}},watch: {},computed: {},created() { },mounted() { },methods: {},destroyed() { }
}
</script>
<style lang='scss'></style>

vue中使用qrcode.js,封装一个生成二维码的组件(支持下载和copy二维码里面的链接)相关推荐

  1. 在VUE中使用QRCode.js

    转自:https://www.cnblogs.com/cuixiaozhen/p/9872307.html 微信不能识别IP地址的二维码,只能识别域名的二维码. 什么是QRCode.js QRCode ...

  2. vue 中使用 QRCode.js 链接转二维码带中间图片

    前言 项目中需要一个链接转二维码的功能,找了一下 决定使用QRCode.js(很久以前的插件了) 下载引入1. <div id="qrcode" ref="qrco ...

  3. 在vue中使用three.js创建一个简单的立体图形

    安装 npm install three --save 使用 页面直接引入import * as THREE from 'three' <template><div><d ...

  4. 如何在 Vue 中使用 Chart.js - 手把手教你搭可视化数据图表

    本文首发:<如何在 Vue 中使用 Chart.js - 手把手教你搭可视化数据图表> 使用 Chart.js 在 Vue 搭建的后台管理工具里添加炫酷的图表,是所有数据展示类后台必备的功 ...

  5. js 或者vue中for循环去掉最后一个逗号

    js 或者vue中for循环去掉最后一个逗号 一个感觉很简单的问题,刚开始我没有思路,现在也没有更好的思路 问题描述: 后端返回的一个数组,前端这边需要循环把名字展示,要求在展示时,每个名字后用** ...

  6. vue中config/index.js:配置的详细理解

    当我们需要和后台分离部署的时候,必须配置config/index.js: 用vue-cli 自动构建的目录里面  (环境变量及其基本变量的配置) 1 2 3 4 5 6 7 8 9 10 11 12 ...

  7. Vue回炉重造之封装一个实用的人脸识别组件

    你好,我是Vam的金豆之路,可以叫我豆哥.2019年年度博客之星.技术领域博客专家.主要领域:前端开发.我的微信是 maomin9761,有什么疑问可以加我哦,自己创建了一个微信技术交流群,可以加我邀 ...

  8. vue中使用raphael.js实现地图绘制

    一.效果图 二.在vue中引入raphael.js npm i raphael -S 三.封装一个名为StreetMap的组件,代码如下 1 <template> 2 <div> ...

  9. 纯js封装一个无缝轮播

    下面的代码用纯js封装一个轮播组件.功能如下: 可上滑.下滑.左滑.右滑.无缝轮播. 移动端支持手势滑动. 可指定第一个显示的轮播图. 支持放置文字.图片和视频.带导航器. 导航器可自定义样式.若不想 ...

最新文章

  1. Xamarin ios 教程 Xamarin跨平台开发 C#苹果应用开发
  2. Windows Phone开发(27):隔离存储A
  3. Android系统Surface机制的SurfaceFlinger服务的启动过程分析
  4. Laravel 有哪些核心的内容?
  5. fastreport(A)
  6. 几款不错的VisualStudio2010插件
  7. 如何让body背景图自适应浏览器窗口大小
  8. ACM/ICPC 之 四道MST-Prim解法(POJ1258-POJ1751-POJ2349-POJ3026)
  9. dumpbin.exe
  10. 微课|中学生可以这样学Python(5.6.1节):列表推导式3
  11. redis怎么开启_关于Redis数据库入门必备的学习点
  12. 【链表】单链表的排序(归并排序)
  13. 试题10 最大子阵(枚举)
  14. 【二维码识别】基于matlab GUI 灰度+二值化+校正二维码生成与识别【含Matlab源码 635期】
  15. 雷达信号处理基础ppt
  16. 手工制作学数学——三维空间八个象限
  17. Java之Base64
  18. 统一社会信用代码校验-JavaScript
  19. 使用IDEA创建一个Solidity项目
  20. UI自动化框架 基于selenium+pytest和PO分层思想

热门文章

  1. python导入模块路径优先级问题
  2. 2023铜鼓半马5月14日开跑,4月18日启动报名!
  3. ECharts数据可视化折线图
  4. android高德SDK,Marker的zIndex导致的遮罩层问题解决
  5. 芯片缺货影响全球智能手机商
  6. 信息化时代文件销毁,保密工作尤为重要
  7. 给宝宝穿开裆裤究竟是好还是坏?
  8. 杨氏干涉的matlab模拟仿真
  9. Ubuntu18.04配置carla0.9.11踩坑与解决方法总结,同时解决安装carla-ros-bridge遇到的问题,并复现OpenCDA成功与ros关联
  10. 大数据、人工智能与云计算的融合与应用