canvas 插件_基于canvas的JavaScript 二維碼生成工具——QRCanvas

介紹

在我們日常的開發中,特別是在現代的社會環境下,二維碼的應用可謂是豐富多彩,各種各樣讓人眼花繚亂的二維碼,可見二維碼已經滲透進我們生活的方方面面,也可以說目二維碼確確實實方便了我們的生活。因為作為開發人員,很多項目都會用到二維碼,最多的莫過于生成二維碼,而如今Web應用盛行,那么就有這樣一個二維碼生成的Javascript庫誕生了,它僅僅依賴與canvas,因此它支持大多數瀏覽器以及NodeJS!


PS:由于平臺限制本文不展示二維碼


亮點

QRCanvas原本是 jsqrgen,新版有幾個亮點

  • 僅依賴canvas,兼容性好
  • 簡單,僅僅是需要一些數據的配置
  • 定制化功能豐富
  • 支持Nodejs
  • 方便在React和Vue中使用

Github和demo

github:

https://github.com/gera2ld/qrcanvas

demo:

https://gera2ld.github.io/qrcanvas/


在demo中你可以體驗它強大的擴展和自定義功能,包括文字、圖片、二維碼大小、Logo等等實用的功能



安裝和使用

一共介紹三種用法

  • 安裝
npm install qrcanvas//或者yarn add qrcanvas

  • 用法

1、es6的模塊化用法

import { qrcanvas } from 'qrcanvas';

2、瀏覽器中使用


const canvas = qrcanvas.qrcanvas({ data: 'hello, world'});document.getElementById('qrcode').appendChild(canvas);

3、在NodeJS中使用

const fs = require('fs');const { qrcanvas } = require('qrcanvas/lib/qrcanvas.node.js');const canvas = qrcanvas({ data: 'hello, world'});// canvas is an instance of `node-canvas`canvas.pngStream().pipe(fs.createWriteStream('qrcode.png'));

瀏覽器兼容性

支持所有主流的瀏覽器


20d80c10cdea50790600b66a67716b5e.png

React和Vue版本

  • Vue版本

Github:

https://github.com/gera2ld/qrcanvas-vue


Demo:

https://gera2ld.github.io/qrcanvas-vue/


npm install qrcanvas-vue//或者yarn add qrcanvas-vue


或者在瀏覽器中



const { QRCanvas: QrCanvas } = qrcanvas.vue;new Vue({ components: { QrCanvas, // QrCanvas  qr-canvas }, data: { options: { data: 'hello', }, }, methods: { onUpdated() { console.log('updated'); }, },}).$mount('#root');


  • React版本

Github:

https://github.com/gera2ld/qrcanvas-react


Demo:

https://gera2ld.github.io/qrcanvas-react/


npm install qrcanvas-react//或者yarn add qrcanvas-react

import { QRCanvas } from 'qrcanvas-react';import ReactDOM from 'react-dom';const options = { data: 'hello, world' };ReactDOM.render(, document.getElementById('app'));


總結

QRCanvas是一個優秀的Web和Nodejs二維碼生成插件,在Web開發中可以得到廣泛的使用,其可定制性滿足了很多人的需求,二維碼也可以有個性。其簡單而不簡單的特點,我相信符合大多數人的期望,再此分享給大家,很多實用的開源項目可以查看以往的文章,希望對你有所幫助!

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

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

相關文章

spring cloud feign 上傳文件報not a type supported by this encoder解決方案

上傳文件調用外部服務報錯: not a type supported by this encoder 查看SpringFormEncoder類的源碼: 1 public class SpringFormEncoder extends FormEncoder2 {3 4 public SpringFormEncoder()5 {6 this(((Encoder) (new feign.codec.…

counter 計數器

包含了兩個屬性和一個方法: 1. counter-reset2. counter-increment3. counter()/counters()counter-reset(主要作用就是給計數器起個名字。如果可能,順便告訴下從哪個數字開始計數。默認是0):.xxx { counter-reset: sm…

linux中的變量文件路徑,Linux庫文件和Shell可執行程序命令文件搜索路徑變量的設置...

一、庫文件的搜索路徑:1、在配置文件/etc/ld.so.conf中指定動態庫搜索路徑(需要添加其它庫文件的路徑,在文件的最后添加具體的路徑即可 [ 如:/usr/local/lib ],添加后保存退出,然后在命令行ldconfig2、通過環境變量LD_…

消息隊列NetMQ 原理分析2-IO線程和完成端口

目錄 前言介紹目的IO線程初始化IO線程Proactor啟動Procator線程輪詢處理socketIOObject總結前言 介紹 [NetMQ](https://github.com/zeromq/netmq.git)是ZeroMQ的C#移植版本,它是對標準socket接口的擴展。它提供了一種異步消息隊列,多消息模式,消息過濾(訂閱&#xf…

django——url(路由)配置

URL是Web服務的入口,用戶通過瀏覽器發送過來的任何請求,都是發送到一個指定的URL地址,然后被響應。 在Django項目中編寫路由,就是向外暴露我們接收哪些URL的請求,除此之外的任何URL都不被處理,也沒有返回。…

VC連接mysql數據庫錯誤:libmysql.lib : fatal error LNK1113: invalid machine 解決方法

VC連接MySQL的配置過程在上一篇博文中,不過當你設置好,以為萬事大吉的時候,運行卻出現這個錯誤:libmysql.lib : fatal error LNK1113: invalid machine type。 無效的機器類型,真的是很讓人捉急。 發生這個錯誤的原因是…

linux 內存泄漏 定位,一種內存泄露檢查和定位的方法

一個系統后臺服務進程,可能包括多個線程,在生成環境下要求系統程序能夠穩定長時間穩定運行而不宕機。其中一個基本的前提就是需要保證系統程序不存在內存泄露。那么,該如何判讀系統程序是否存在內存泄露呢?如果存在,又…

python怎么發送郵件_在Python如何使用SMTP發送郵件

SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它是一組用于由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。 python的smtplib提供了一種很方便的途徑發送電子郵件。它對smtp協議進行了簡單的封裝。 Python創建 SMTP…

統計單詞個數(劃分型)

codevs 1040 統計單詞個數 2001年NOIP全國聯賽提高組 題目等級 : 黃金 Gold題目描述 Description給出一個長度不超過200的由小寫英文字母組成的字母串(約定;該字串以每行20個字母的方式輸入&#xff0c;且保證每行一定為20個)。要求將此字母串分成k份(1<k<40)&#xff0c…

基于ASP.NET的新聞管理系統(三)代碼展示

5.1.1欄目部分 增加欄目&#xff08;addLanMu.aspx&#xff09;&#xff1a; <html xmlns"http://www.w3.org/1999/xhtml"> <head runat"server"> <title></title> <link rel"stylesheet" type"text/css" …

洛谷-求同構數的個數-NOIP2013提高組復賽

題目描述 Description 所謂同構數是指這樣的數&#xff0c;即它出現在它的平方數的右端。例如&#xff0c;5的平方是25 &#xff08;即5525&#xff09;&#xff0c;5是25右端的數&#xff0c;那么5就是同構數。又如&#xff0c;25的平方是625&#xff08;即2525625&#xff09…

plex linux 數據目錄,shareplex日常維護文檔

2017/07/25##SharePlex日常維護源(SRC)&#xff1a;192.168.1.101 db01目標(TGT):192.168.1.102 db02SRC:su - oraclesp_ctrlshowqstatusshow capture detailshow read detailshow log reverseshow config --查看當前使用參數文件list config --羅列出所有的參數文件(使用和未使…

ifconfig命令找不到_02. Linux命令之查看網絡連接

1. 查看網絡連接數和端口使用 netstat 命令查看網絡連接情況netstat -anp參數&#xff1a;-a 顯示所有選項-t (tcp)僅顯示tcp相關選項-u (udp)僅顯示udp相關選項-n 拒絕顯示別名&#xff0c;能顯示數字的全部轉化成數字。-p 顯示建立相關鏈接的程序名關鍵列解釋:Proto 表示協議…

grep與egrep的區別

grep與egrep的區別&#xff1b; 在linux系統環境下&#xff0c;我們通常使用grep命令來過濾出需要的行而egrep確很少使用&#xff0c;他們的區別其實很簡單&#xff0c;grep默認不支持正則表達式&#xff0c;egrep默認支持正則表達式&#xff0c;egrep 等于 grep -E 命令。轉載…

python學習之模塊(pip),列表生成式,模塊操作mysql,excel

python基礎 生成式 列表生成式  格式 [表達式 for 表達式 in 迭代對象 (可加判斷)] 原&#xff1a; 1 res1 [] 2 for i in range(1,5): 3   res1.append(i) 4 print(res1) 改&#xff1a; 1 res2 [i for i in range(1,5)] 2 print(res2) 字典生成式  格式 {key:value f…

linux驅動read函數 copytouser,Linux驅動編程 step-by-step (五)主要的文件操作方法實現...

主要的文件操作方法實現文件操作函數有很多的操作接口&#xff0c;驅動編程需要實現這些接口&#xff0c;在用戶編程時候系統調用時候會調用到這些操作structfile_operations {...loff_t (*llseek) (structfile *, loff_t,int);ssize_t (*read) (structfile *,char__user *,siz…

web開發中的 emmet 效率提升工具

web開發中的 emmet 效率提升工具 可以用來快速生成html 代碼。 并且給各種IDE、編輯器提供了插件支持&#xff0c;sublime &#xff0c;webstorm等。 如在webstorm中安裝好emmet之后&#xff0c;輸入以下文本&#xff0c; #page>div.content[ng-model"user"]ul>…

python二維數組操作_Python二維數組應用與操作

課課家將會在這里為大家詳細的介紹一下Python二維數組的相關應用方法以及定義方式&#xff0c;相信朋友們可以從中學習到更多的知識。 Python數組的應用中在實際編程中是一個非常重要的應用技術&#xff0c;作為Python編程人員來說&#xff0c;必須要熟練的掌握這方面的所有應用…

基于光線追蹤的渲染中景深(Depth of field)效果的實現

圖形學離線渲染中常用的透視攝像機模型時根據小孔成像的原理建立的&#xff0c;其實現通常是從向成像平面上發射ray&#xff0c;并把trace這條ray的結果作為成像平面上對應交點的采樣結果。即&#xff1a; 圖片來自《Fundamentals of Computer Graphics》 現實中的鏡頭拍攝的圖…

ubuntu 安裝 pycharm

添加源&#xff1a;$ sudo add-apt-repository ppa:mystic-mirage/pycharm安裝收費的專業版&#xff1a;$ sudo apt update$ sudo apt install pycharm安裝免費的社區版&#xff1a;$ sudo apt update$ sudo apt install pycharm-community卸載&#xff1a;$ sudo apt remove p…