npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

u-qrcode2

v3.2.2

Published

uQRCode 二维码生成插件

Downloads

9

Readme

uQRCode

点击群号加入群聊【uQRCode交流群】:695070434

uQRCode 生成方式简单,可扩展性高,适用所有前端应用和Node.js服务端,可运行到所有支持canvas的平台。支持NVUE(NVUE中使用GCanvas)。

支持自定义二维码渲染规则,可通过uQRCode API得到矩阵信息后,自行实现canvas或view+css渲染二维码,如随机颜色、圆点、方块、块与块之间的间距等,详情参考示例项目。

插件市场

https://ext.dcloud.net.cn/plugin?id=1287

github

https://github.com/Sansnn/uQRCode

npm

https://www.npmjs.com/package/u-qrcode

示例预览

https://static-c15f4b57-ef97-4d2b-b939-f580f910d7e2.bspapp.com

二维码

什么是QR码

QR码属于矩阵式二维码中的一个种类,由DENSO(日本电装)公司开发,由JIS和ISO将其标准化。

QR码的特点

一是高速读取(QR就是取自“Quick Response”的首字母),通过摄像头从拍摄到解码到显示内容也就三秒左右,对摄像的角度也没有什么要求;

二是高容量、高密度,理论上内容经过压缩处理后可以存7089个数字,4296个字母和数字混合字符,2953个8位字节数据,1817个汉字;

三是支持纠错处理,按照QR码的标准文档说明,QR码的纠错分为4个级别,分别是:

  • level L : 最大 7% 的错误能够被纠正;
  • level M : 最大 15% 的错误能够被纠正;
  • level Q : 最大 25% 的错误能够被纠正;
  • level H : 最大 30% 的错误能够被纠正;

四是结构化,看似无规则的图形,其实对区域有严格的定义。

更多二维码介绍及原理:https://blog.csdn.net/jason_ldh/article/details/11801355

组件使用

导入u-qrcode组件后,在 template 中创建 <u-qrcode/> 组件

<u-qrcode ref="qrcode" canvas-id="qrcode" value="uQRCode"></u-qrcode>

属性说明

|属性名 |类型 |可选值 |默认值 |是否必填 |说明 | |--- |--- |--- |--- |--- |:--- | |canvasId |String |- |- |是 |组件标识/canvasId | |value |String |- |- |是 |二维码内容 | |size |Number |- |354 |否 |二维码大小,默认单位px,rpx需要使用uni.upx2px()转换| |options |Object |- |- |否 |参数可选项,详见下方options说明 |

事件说明

|事件名 |参数 |返回值 |说明 | |--- |--- |--- |:--- | |click |- |void |点击事件 | |complete |- |Object |生成完成事件,返回值success: true表示生成成功,false生成失败 |

方法说明

|方法名 |参数 |返回值 |说明 | |--- |--- |--- |:--- | |remake |- |void |重新生成 | |toTempFilePath |Object:callback|void |导出临时路径 | |save |Object:callback|void |保存 |

options说明

|属性名 |类型 |可选值 |默认值 |是否必填 |说明 | |--- |--- |--- |--- |--- |:--- | |typeNumber |Number |- |-1 |否 |二维码版本 | |errorCorrectLevel |String/Number|L/M/Q/H/1/0/3/2|H |否 |纠错等级L/M/Q/H分别对应1/0/3/2 | |useDynamicSize |Boolean |- |false |否 |是否使用动态尺寸,可以去除二维码小块白色细线 | |margin |Number |- |0 |否 |填充边距,默认单位px | |background |Object |- |- |否 |背景设置,详见下方options.background说明 | |foreground |Object |- |- |否 |前景设置,详见下方options.foreground说明 | |positionDetection |Object |- |- |否 |定位角设置,详见下方options.positionDetection说明 | |separator |Object |- |- |否 |分割图案设置,详见下方options.separator说明 | |alignment |Object |- |- |否 |对齐图案设置,详见下方options.alignment说明 | |timing |Object |- |- |否 |时序图案设置,详见下方options.timing说明 | |darkBlock |Object |- |- |否 |暗块设置,详见下方options.darkBlock说明 | |versionInformation |Object |- |- |否 |版本信息设置,详见下方options.versionInformation说明 |

options.background说明

|属性名 |类型 |可选值 |默认值 |是否必填 |说明 | |--- |--- |--- |--- |--- |:--- | |color |String |- |#FFFFFF|否 |背景色,若需要透明背景可设置为rgba(0,0,0,0)| |image |Object |- |- |否 |背景图片设置,详见下方options.background.image说明|

options.background.image说明

|属性名 |类型 |可选值 |默认值 |是否必填 |说明 | |--- |--- |--- |--- |--- |:--- | |src |String |- |- |否 |背景图片路径 | |width |Number |- |1 |否 |指定背景图片宽度,1为二维码size的100% | |height |Number |- |1 |否 |指定背景图片高度,1为二维码size的100% | |align |Array|['left'/'center'/'right', 'top'/'center'/'bottom'] |['center', 'center'] |否 |指定背景图片对齐方式,[0]为水平方位,[1]为垂直方位 | |anchor |Array|- |[0, 0] |否 |指定背景图片锚点,[0]为X轴偏移量,[1]为Y轴偏移量 | |alpha |Number |0-1 |1 |否 |指定背景图片透明度 |

options.foreground说明

|属性名 |类型 |可选值 |默认值 |是否必填 |说明 | |--- |--- |--- |--- |--- |:--- | |color |String |- |#FFFFFF|否 |前景色 | |image |Object |- |- |否 |前景图片设置,详见下方options.foreground.image说明 |

options.foreground.image说明

|属性名 |类型 |可选值 |默认值 |是否必填 |说明 | |--- |--- |--- |--- |--- |:--- | |src |String |- |- |否 |前景图片路径 | |width |Number |- |1/4 |否 |指定前景图片宽度,1为二维码size的100% | |height |Number |- |1/4 |否 |指定前景图片高度,1为二维码size的100% | |align |Array|['left'/'center'/'right', 'top'/'center'/'bottom'] |['center', 'center'] |否 |指定前景图片对齐方式,[0]为水平方位,[1]为垂直方位 | |anchor |Array|- |[0, 0] |否 |指定前景图片锚点,[0]为X轴偏移量,[1]为Y轴偏移量 |

options.positionDetection说明

|属性名 |类型 |可选值 |默认值 |是否必填 |说明 | |--- |--- |--- |--- |--- |:--- | |backgroundColor|String |- |options.background.color |否 |定位角区域背景色,默认值跟随背景色 | |foregroundColor|String |- |options.foreground.color |否 |定位角小块颜色,默认值跟随前景色 |

options.separator说明

|属性名 |类型 |可选值 |默认值 |是否必填 |说明 | |--- |--- |--- |--- |--- |:--- | |color |String |- |options.background.color |否 |分割区域颜色,默认值跟随背景色 |

options.alignment说明

|属性名 |类型 |可选值 |默认值 |是否必填 |说明 | |--- |--- |--- |--- |--- |:--- | |backgroundColor|String |- |options.background.color |否 |对齐区域背景色,默认值跟随背景色 | |foregroundColor|String |- |options.foreground.color |否 |对齐小块颜色,默认值跟随前景色 |

options.timing说明

|属性名 |类型 |可选值 |默认值 |是否必填 |说明 | |--- |--- |--- |--- |--- |:--- | |backgroundColor|String |- |options.background.color |否 |时序区域背景色,默认值跟随背景色 | |foregroundColor|String |- |options.foreground.color |否 |时序小块颜色,默认值跟随前景色 |

options.darkBlock说明

|属性名 |类型 |可选值 |默认值 |是否必填 |说明 | |--- |--- |--- |--- |--- |:--- | |color |String |- |options.foreground.color |否 |暗块颜色,默认值跟随前景色 |

options.versionInformation说明

|属性名 |类型 |可选值 |默认值 |是否必填 |说明 | |--- |--- |--- |--- |--- |:--- | |backgroundColor|String |- |options.background.color |否 |版本信息区域背景色,默认值跟随背景色 | |foregroundColor|String |- |options.foreground.color |否 |版本信息小块颜色,默认值跟随前景色 |

u-qrcode.js使用

引入u-qrcode.js

import uQRCode from '../../uni_modules/Sansnn-uQRCode/js_sdk/u-qrcode';

或者使用npm安装

npm i u-qrcode

import uQRCode from 'u-qrcode';

nodejs引入

import uQRCode from 'u-qrcode/module';

template 中创建 <canvas/> 组件并设置 id,画布宽高

<canvas id="qrcode" canvas-id="qrcode" :style="{ width: `${size}px`, height: `${size}px` }"></canvas>

script 中调用生成方法

import uQRCode from '../../uni_modules/Sansnn-uQRCode/js_sdk/u-qrcode';

export default {
  data() {
    return {
      text: 'uQRCode',
      size: 256
    }
  },
  onReady() {
    const ctx = uni.createCanvasContext('qrcode');
    const uqrcode = new uQRCode(
      {
        text: this.text,
        size: this.size
      },
      ctx
    );
    uqrcode.make();
    uqrcode.draw();
  }
}

new uQRCode(options, canvasContext, loadImage)说明

|属性名 |类型 |可选值 |默认值 |是否必填 |说明 | |--- |--- |--- |--- |--- |:--- | |options |Object |- |- |是 |包含组件属性中的options的所有属性,详见下方options说明 | |canvasContext|Object |- |- |是 |canvas绘画上下文 | |loadImage |Promise|- |- |否 |绘制图片时,某些平台必传,例如微信小程序2d绘图需要创建Image对象,不能直接使用路径,这时就需要传入canvas.createImage给loadImage方法,否则无法绘制图片 |

options说明,包含组件属性中的options的所有属性,下方仅列举未包含的属性,其余属性请移步到组件属性options说明查看

|属性名 |类型 |可选值 |默认值 |是否必填 |说明 | |--- |--- |--- |--- |--- |:--- | |text |String |- |- |是 |二维码内容 | |size |Number |- |354 |否 |二维码大小 |

uQRCode实例属性

|属性名 |类型 |说明 | |--- |--- |:--- | |options |Object |实例化传入的选项值 | |canvasContext|Object |画布实例 | |makeData |Object |制作二维码全部数据 | |modules |Array |制作二维码主要模块数据 | |moduleCount |Number |模块数量 |

uQRCode实例方法

|方法名 |参数 |返回值 |说明 | |--- |--- |--- |:--- | |make |- |void |制作二维码方法 | |draw |options|Promise|绘制二维码方法,绘制层级关系,最底层背景 -> 背景图片 -> 前景 -> 最顶层前景图片,options见下方说明 |

draw(options)说明

|属性名 |类型 |可选值 |默认值 |是否必填 |说明 | |--- |--- |--- |--- |--- |:--- | |drawBackground |Object: {before, after}|- |- |否 |绘制背景前后可执行自定义方法before,after | |drawBackgroundImage|Object: {before, after}|- |- |否 |绘制背景图前后可执行自定义方法before,after| |drawForeground |Object: {before, after}|- |- |否 |绘制前景前后可执行自定义方法before,after | |drawForegroundImage|Object: {before, after}|- |- |否 |绘制前景图前后可执行自定义方法before,after|

uQRCode静态属性

|属性名 |类型 |说明 | |--- |--- |:--- | |errorCorrectLevel|Object |纠错等级 | |defaults |Object |预设默认值 |

uQRCode静态方法

|方法名 |参数 |返回值 |说明 | |--- |--- |--- |:--- | |deepReplace|o, r |替换后的新对象 |对象属性深度替换 |

常见问题

如何扫码跳转指定网页

二维码内容直接放入完整的网页地址即可,例如:https://ext.dcloud.net.cn/plugin?id=1287。微信客户端不能是ip地址。

nvue打包后生成失败

Canvas是作为独立的模块,打包时需要选择使用Canvas模块才能正常使用相关的功能。 需要在manifest.json的代码视图中配置如下(暂时还不支持可视化界面操作):

"app-plus" : {
  /* 模块配置 */
  "modules" : {
    "Canvas" : "nvue canvas"    //使用Canvas模块
  },
  //...
},
//...

保存好提交云端打包。