@wecity/mp-sdk
TypeScript icon, indicating that this package has built-in type declarations

1.0.4 • Public • Published

常用工具方法

数据缓存 storage

示例代码

const sdk = require('@wecity/mp-sdk');

// 设置24小时后过期的缓存
sdk.storage.setStorageSync('info', {
  id: 1,
  type: 'other'
}, 24 * 60 * 60)

// 获取本地缓存
sdk.storage.getStorageSync('info')

// 删除指定 key 的本地缓存
sdk.storage.removeStorageSync('info')

// 清理已过期的本地缓存
sdk.storage.clearExpiredStorage()

API 列表

setStorageSync(key, value, expires) 设置指定 key 的本地缓存

由于小程序官方提供 10m 存储空间,当设备剩余存储空间比设置的 value 空间小的话,

会优先清除已过期的本地缓存再重试,如果存储空间还不够的话,则取消本次存储操作,并在控制台输出相关警告!


参数 类型 说明
key string 本地缓存中指定的 key
value object/string 需要存储的内容
expires? timestamp 以秒为单位,默认过期时间 7 天,7 * 24 * 60 * 60

getStorageSync(key) 获取指定 key 的本地缓存

如果当前获取的 key 已过期,则返回null


参数 类型 说明
key string 本地缓存中指定的 key

removeStorageSync(key) 删除指定 key 的本地缓存

参数 类型 说明
key string 本地缓存中指定的 key

clearExpiredStorage() 清理已过期的本地缓存

加密解密 crypto

示例代码

const sdk = require('@wecity/mp-sdk');

// 加密(AES方法)
sdk.crypto.encryptByAES('未加密的字符串', '0123456789012345') // 密钥 key 必须是十六位字符串

// 解密(AES方法)
sdk.crypto.decryptByAES('已加密的乱码串', '0123456789012345')

API 列表

encryptByAES(word, secretKey) 加密

参数 类型 说明
word string 未加密的字符串
secretKey string 密钥 key 必须是十六位字符串,推荐用 sessionId 的后16位作为密钥

默认加密解密配置,请联系后端保持一致

{
  "mode": CryptoJS.mode.ECB,
  "padding": CryptoJS.pad.Pkcs7
}

decryptByAES(word, secretKey) 解密

参数 类型 说明
word string 已加密的乱码串
secretKey string 密钥 key 必须是十六位字符串,推荐用 sessionId 的后16位作为密钥

更多API,请参考 CryptoJS文档CryptoJS 已挂载到 sdk.crypto

事件通讯 event

示例代码

const sdk = require('@wecity/mp-sdk');

// 监听事件
sdk.event.addEventListener('eventName', (res) => {
  console.log(res.type)    // eventName
  console.log(res.target)  // 派发时传入的数据,可以是任意值
  // do something
}, this)

// 监听同个事件,绑定多个 handler
sdk.event.addEventListener('eventName', handler1, this)
sdk.event.addEventListener('eventName', handler2, this)
sdk.event.addEventListener('eventName', handler3, this)

// 触发事件
sdk.event.dispatch('eventName', '派发时传入的数据,可以是任意值')

// 取消监听事件名下 所有 处理函数
sdk.event.removeEventListener('eventName')

// 取消监听事件名下 单个 处理函数
sdk.event.removeSingleEventListener('eventName', handler1, this)

API 列表

addEventListener(type, callback, scope)

参数 类型 说明
type string 事件名
callback function 事件函数
scope scope 作用域

dispatch(type, target) 触发事件

参数 类型 说明
type string 事件名
target any 传递的数据

removeEventListener(type) 取消监听事件名下 所有 处理函数

参数 类型 说明
type string 事件名

removeSingleEventListener(type, callback, scope) 取消监听事件名下 单个 处理函数

参数 类型 说明
type string 事件名
callback function 事件函数
scope scope 作用域

hasEventListener(type, callback, scope) 是否存在当前事件监听的处理函数

参数 类型 说明
type string 事件名
callback function 事件函数
scope scope 作用域

流程创建工具

例如存在场景:查询公积金,首先判断有没有做实名认证,没有的话跳转去做实名认证(实名认证:包括输入姓名/身份证页、人脸页等页面)。实名认证完后,跳转回公积金查询页显示公积金查询结果。

这种情况可以使用流程工具,把实名认证作为一个流程,不与任何业务耦合,执行完后,像函数一样返回结果给到调用方。

示例代码

公积金页

const sdk = require('@wecity/mp-sdk');
// 去做人脸
sdk.flow.createFlow('/pages/faceVerify', options)
  .then((res) => {
    // 人脸完成后,获取公积金结果显示
  }).catch((e)=>{
    // 人脸失败处理
});

人脸页-姓名填写页

const sdk = require('@wecity/mp-sdk');

// 姓名填写完,去人脸页面,需要使用flow提供的跳转api,功能与wx.navigateTo一致
sdk.flow.navigateTo({
  url:"/pages/face",
});

人脸页-实名认证

const sdk = require('@wecity/mp-sdk');

// 实名认证
doface();

// 返回成功结果,失败结果调用sdk.flow.reject({err})
sdk.flow.resolve({
  data
});

API 列表

createFlow(url, options)

参数 类型 说明
url string 小程序页面路径
options object 传入的参数,如果不需要回到当前调用页面,则传入navigateType=keep

destory()

该 API 用于在流程起始页,onUnload 处用于卸载流程跳转的监听

const sdk = require('@wecity/mp-sdk');

Page({
  onUnload() {
    flow.destory()
  }
})

navigateTo(options)

参数 类型 说明
options object 与小程序wx.navigateTo的参数一致

redirectTo(options)

参数 类型 说明
options object 与小程序wx.navigateTo的参数一致

resolve(retData)

参数 类型 说明
retData object/string 成功的返回结果

reject(errData)

参数 类型 说明
errData object/string 失败的返回结果

其他工具方法

deepClone(object) 深度克隆

参数 类型 说明
object any 被深度克隆的源
const sdk = require('@wecity/mp-sdk');
const src = {}
const newSrc = sdk.deepClone(src)

console.log(src === newSrc) // false

urlJoinParams(url, params) 拼接 Url 参数

参数 类型 说明
url string 网址
params object 参数对象,如 { a: 2, b: 3 }
const sdk = require('@wecity/mp-sdk');
const url = sdk.urlJoinParams('https://www.xx.com', {
  a: 2,
  b: 3
})

console.log(url) // https://www.xx.com?a=2&b=3

navigateBack(delta) 返回 N 层页面后再执行

由于微信官方的 navigateBack 函数是调用后立刻执行 success 函数,并没有返回 N 层页面后再执行的功能。

sdk.navigateBack 提供了此功能。

参数 类型 说明
delta nubmer 返回页面层数
const sdk = require('@wecity/mp-sdk');

sdk.navigateBack(2)
  .then(() => {
    // 返回成功后再执行
  })

compareVersion(version1, version2) 版本对比

参数 类型 说明
version1 string 版本1
version2 string 版本2

  • 版本1比版本2大 返回数字类型 1
  • 版本1和版本2相同 返回数字类型 0
  • 版本2比版本1小 返回数字类型 -1
const sdk = require('@wecity/mp-sdk');

console.log(sdk.compareVersion('1.0.2', '1.0.1')) // 1
console.log(sdk.compareVersion('1.0.0', '1.0.0')) // 0
console.log(sdk.compareVersion('1.0.1', '1.0.2')) // -1

hideIdCard(idCard, keepLength) 身份证号码脱敏

参数 类型 说明
idCard string 版本1
keepLength Number 前后保留的位数

const sdk = require('@wecity/mp-sdk');

console.log(sdk.hideIdCard('400000000123456789', 1)) // 4****************9
console.log(sdk.hideIdCard('400000000123456789', 2)) // 40**************89
console.log(sdk.hideIdCard('400000000123456789', 4)) // 4000**********6789

hideName(name) 姓名脱敏

参数 类型 说明
name string 姓名

const sdk = require('@wecity/mp-sdk');

console.log(sdk.hideName('张三')) // 张*
console.log(sdk.hideName('李大安')) // 李**

debounce(callback, wait, immediate) 防抖

参数 类型 说明
callback Function 回调函数
wait Number 时间窗口的间隔,大约100或250(甚至更高)的值是最有用
immediate Boolean 是否立即调用

返回函数连续调用时,空闲时间必须大于或等于 wait,func 才会执行

const sdk = require('@wecity/mp-sdk');

Page({
  onLoad() {
    const doSomeThing = () => console.log('do do do')
    wx.onWindowResize(sdk.debounce(doSomeThing, 200))
  }
})

throttle(callback, delay) 节流

参数 类型 说明
callback Function 回调函数
delay Number 时间窗口的间隔

返回函数连续调用时,func 执行频率限定为 1 次 / delay

const sdk = require('@wecity/mp-sdk');

Page({
  onLoad() {
    const doSomeThing = () => console.log('do do do')
    wx.onWindowResize(sdk.throttle(doSomeThing, 200))
  }
})

Readme

Keywords

none

Package Sidebar

Install

npm i @wecity/mp-sdk

Weekly Downloads

0

Version

1.0.4

License

ISC

Unpacked Size

35.3 kB

Total Files

8

Last publish

Collaborators

  • loopzhou
  • zystylish
  • brian_zhang
  • legendlu
  • fenfeizeng
  • colinczhu
  • easonruan
  • yikazhu
  • daniel-dx
  • domy
  • delenzhang
  • vickiliang
  • derrickliu
  • xiaoyaojones
  • smileswlin
  • jillysong
  • allennzhang
  • sharryliao
  • pechelhuang
  • phspan