连续加班一个月,已经有点吐血。趁今天空闲继续记录一些笔记。之前做的网站和小程序现在可以记录一些笔记出来总结。
今天做小程序帮助一个客户加了扫码功能。微信小程序提供了这个内置扫码的功能。这个函数简单而且方便。只要使用扫码功能就能获取二维码链接的参数。下面先看一下小程序内置提供的调用扫一扫的功能函数。函数非常简单,返回一个sucess函数回调。至于内部做了什么操作。我想是他内部提供的的底层解析的工作,小程序只是提供一个高级的上层API。接下来我们需要在扫码回调后,解析的参数。这些参数有什么特定需求?例如有一些硬件设备提供二维码进行扫码。扫码后获取链接对应的参数让小程序发起参数调用。小程序提供内置扫码参数如下。
wx.scanCode({ success: (res) => { console.log(res.result) //分析一个参数 var result = res.result; console.log(result) } })有了这个参数后,我们需要定制一个二维码,将这个二维码附加一个链接参数。例 参数的格式是一些http 的请求,带上几个参数。例如下面的链接,带上了设备id参数,带上了蓝牙的广播名btname,手机phone
https://google.com/app.html?deviceId=8888&phone=0000&btname=8888我们将这个链接做成一个二维码
接下来编写一个小程序,发起这个函数。当扫码结束后,进行对编码进行解析。我们需要对链接进行一个简单解析,将相应的链接采取字符串裁剪的办法进行处理,获取一个返回的键值对key -value结构。
将参数 deviceId=8888&phone=0000&btname=8888 //变成 var param = {deviceId:8888,phone:0000,btname:8888}在小程序里面,编写一个方法,在utils 里面的util.js工具类 添加一个解析的方法。
const parseURL = (url)=>{ if (url && url.indexOf("?") == -1) return {} var startIndex = url.indexOf("?") + 1; var str = url.substr(startIndex); var strs = str.split("&"); var param = {} for (var i = 0; i < strs.length; i++) { var result = strs[i].split("="); var key = result[0]; var value = result[1]; param[key] = value; } return param } module.exports = { parseURL: parseURL }方法封装完成后,调用小程序内置提供扫码功能。完成这个解析操作。
const util = require("../../utils/util.js") wx.scanCode({ success: (res) => { console.log(res.result) //分析一个参数 var url = res.result; var result = util.parseURL(url); console.log(result) wx.showModal({ title: '提示', content: JSON.stringify(result), }) }, fail:(res)=>{ wx.showModal({ title: '提示', content: JSON.stringify(res), }) } })在开发调试过程中,小程序需要不断扫码进行调试。发现每次编译都会进行多连串的工具。所以需要运用调试模式查看参数是否错误。这样不至于扫码不返回出现的一些尴尬问题。
