评论

wxutil开源工具封装官方API接口,提高小程序开发效率

项目源码地址:https://github.com/YYJeffrey/wxutil/ 有好的意见或建议都可以提出来一起相互学习交流

wxutil

这是一款在公司上班无聊时写的小工具,希望能帮到那些小程序圈内的朋友们,使用该工具能在很大程度上提高开发效率

wxutil工具使用promise语法封装了微信小程序官方的高频API,以及常用的开发方法。项目地址: https://github.com/YYJeffrey/wxutil/

快速上手

方法一:在需要使用的位置引入wxutil(下方示例调用代码均以该方法引入)

const wxutil = require("../../utils/wxutil.js")

方法二:通过导入自己所需模块来引入wxutil

import { request } from "../../utils/wxutil.js"

工具模块

网络请求

封装微信小程序wx.request()方法实现五大http请求方法

get

使用promise语法异步获取请求数据或捕获请求异常信息

const handler = {
    url: url,
    data: data,
    header: header
} 

wxutil.request.get(handler).then((data) => {
    console.log(data)  // 业务处理
}).catch((error) => {
    console.log(error) // 异常处理
})

亦可用更快速的方法请求

wxutil.request.get(url).then((data) => {
    console.log(data)
})

post

const handler = {
    url: url,
    data: {},
    header: {}
}

wxutil.request.post(handler).then((data) => {
    console.log(data)
})

亦可用直接传递参数的方式请求

wxutil.request.post({url: url, data: data}).then((data) => {
    console.log(data)
})

put

wxutil.request.put({url: url, data: data}).then((data) => {
    console.log(data)
})

patch

wxutil.request.patch({url: url, data: data}).then((data) => {
    console.log(data)
})

delete

wxutil.request.delete({url: url, data: data}).then((data) => {
    console.log(data)
})

文件请求

封装微信小程序wx.downloadFile()和wx.uploadFile()方法

download

wxutil.file.download({url}).then((data) => {
    console.log(data)
})

upload

wxutil.file.upload({
    url: url,
    fileKey: fileKey,
    filePath: filePath,
    data: {},
    header: {}
}).then((data) => {
    console.log(data)
})

socket通信

封装微信小程序的websocket部分方法,实现整个socket流程如下

let socketOpen = false  // socket连接标识
wxutil.socket.connect(url)

// 监听socket通信
wx.onSocketMessage((res) => {
    console.log(res)  
}

wx.onSocketOpen((res) => {
    socketOpen = true
    if (socketOpen) {
        // 发送socket消息
        wxutil.socket.send("hello wxutil").then((data) => {
            console.log(data)
        })
    }

    // 关闭socket连接
    wxutil.socket.close(url)
})

图片操作

封装微信小程序的wx.saveImageToPhotosAlbum()、wx.previewImage()、wx.chooseImage()方法,用于保存图片到本机相册、预览图片以及从相机或相册选择图片

save

wxutil.image.save(path).then((data) => {
    console.log(data)
})

preview

wxutil.image.preview(["img/1.png"])

choose

参数:count, sourceType

wxutil.image.choose(1).then((data) => {
    console.log(data)
})

提示

封装微信小程序的wx.showToast()、wx.showModal()、wx.showLoading()和wx.showActionSheet()方法,用于给用户友好提示

showToast

wxutil.showToast("hello")

showModal

wxutil.showModal("提示", "这是一个模态弹窗")

亦可传入参数并在回调函数中处理自己的业务

wxutil.showModal(title: title, content: content, handler = {
    showCancel: showCancel,
    cancelText: cancelText,
    confirmText: confirmText,
    cancelColor: cancelColor,
    confirmColor: confirmColor
}).then((data) => {
    console.log(data)
})

showLoading

wxutil.showLoading("加载中")

showActionSheet

wxutil.showActionSheet(['A', 'B', 'C']).then((data) => {
    console.log(data)
})

缓存

封装微信小程序的wx.setStorageSync()和wx.getStorageSync()方法,异步设置缓存和获取缓存内容,并可以设置缓存过期时间

setStorage

wxutil.setStorage("userInfo", userInfo)

亦可为缓存设置过期时间,单位:秒

wxutil.setStorage("userInfo", userInfo, 86400)

getStorage

wxutil.getStorage("userInfo")

授权

封装了需要用户授权微信小程序的方法

getLocation

获取用户的地理位置

wxutil.getLocation().then((data) => {
    console.log(data)
})

亦可通过传入可选参数打开微信小程序的地图

wxutil.getLocation("gcj02", true).then((data) => {
    console.log(data)
})

getUserInfo

获取用户信息,可传递两个参数:login和lang,login为true可返回wx.login获取到的code,lang默认为中文,该方法需要使用button触发

wxutil.getUserInfo().then((data) => {
    console.log(data)
})

requestPayment

封装了微信小程序的requestPayment方法,需要传递后端的timeStamp、nonceStr、packageValue、paySign这几个参数,加密方式默认为“MD5”

wxutil.requestPayment({
    timeStamp: timeStamp,
    nonceStr: nonceStr,
    packageValue: packageValue,
    paySign: paySign
}).then((data) => {
    console.log(data)
})

其他工具

封装了常用的微信小程序方法,便于高效开发,也可以增加自己的工具方法在下方

autoUpdate

在app.js中引用该方法,可以在微信小程序发布新版本后自动更新

wxutil.autoUpdate()

isNotNull

判断字符串是否为空、空格回车等,不为空返回true

wxutil.isNotNull("text")

getDateTime

获取当前日期时间,格式:yy-mm-dd hh:MM:ss

const datetime = wxutil.getDateTime()
console.log(datetime)

getTimestamp

获取当前时间戳

const timestamp = wxutil.getTimestamp()
console.log(timestamp)
点赞 0
收藏
评论

2 个评论

  • 陈式坚
    陈式坚
    2019-07-25

    这难道不是换种写法而已?

    2019-07-25
    赞同 2
    回复
  • 2019-07-25

    怎么处理并发呢

    2019-07-25
    赞同
    回复
登录 后发表内容