${API}.${method}.${param}.${option} 或者 ${component}.${attribute}.${option}
方式来调用${API} 代表 API 名字 ${method} 代表调用方式,有效值为return, success, object, callback ${param} 代表参数或者返回值 ${option} 代表参数的可选值或者返回值的属性 ${component} 代表组件名字 ${attribute} 代表组件属性 ${option} 代表组件属性的可选值
ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区。它是一个字节数组,通常在其他语言中称为“byte array”。 你不能直接操作 ArrayBuffer 的内容,而是要通过类型数组对象或 DataView 对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。
https://www.cnblogs.com/copperhaze/p/6149041.html
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。
https://baike.baidu.com/item/base64/8545775?fr=aladdin
const base64 = 'CxYh'
const arrayBuffer = wx.base64ToArrayBuffer(base64)
const arrayBuffer = new Uint8Array([11, 22, 33])
const base64 = wx.arrayBufferToBase64(arrayBuffer)
const updateManager = wx.getUpdateManager()
updateManager.onCheckForUpdate(function (res) {
// 请求完新版本信息的回调
console.log(res.hasUpdate)
})
updateManager.onUpdateReady(function () {
wx.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
success: function (res) {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate()
}
}
})
})
updateManager.onUpdateFailed(function () {
// 新版本下载失败
})
【方法】
UpdateManager.applyUpdate()
强制小程序重启并使用新版本。在小程序新版本下载完成后(即收到 onUpdateReady 回调)调用。
UpdateManager.onCheckForUpdate(function callback)
监听向微信后台请求检查更新结果事件。微信在小程序冷启动时自动检查更新,不需由开发者主动触发。
UpdateManager.onUpdateReady(function callback)
监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调
UpdateManager.onUpdateFailed(function callback)
监听小程序更新失败事件。小程序有新版本,客户端主动触发下载(无需开发者触发),下载失败(可能是网络原因等)后回调
wx.offPageNotFound(function callback):取消监听小程序要打开的页面不存在事件
wx.onError(function callback):监听小程序错误事件,如脚本错误或API调用报错等,该事件与 App.onError 的回调时机与参数一致
wx.offError(function callback):取消监听小程序错误事件
wx.onAudioInterruptionEnd(function callback):监听音频中断结束事件,在收到onAudioInterruptionBegin事件之后,小程序内所有音频会暂停,收到此事件粥才可再次播放成功
wx.offAudioInterruptionEnd(function callback):取消监听音频中断结束事件
wx.onAudioInterruptionBegin(function callback):监听音频因为受到系统占用而被中断开始事件,以下场景会触发此事件,如闹钟、电话、FaceTime通话、微信语音聊天、微信视频聊天。此事件触发后,小程序内所有音频会暂停
wx.offAudioInterruptionBegin(function callback):取消监听音频因为受到系统占用而被中断开始事件
wx.onAppShow(function callback):监听小程序切前台事件,该事件与 App.onShow 的回调参数一致
wx.offAppShow(function callback):取消监听小程序切前台事件
wx.onAppHide(function callback):监听小程序切后台事件,该事件与App.onHide的回调时机一致。
wx.offAppHide(function callback):取消监听小程序切后台事件
// 打开调试
wx.setEnableDebug({
enableDebug: true
})
// 关闭调试
wx.setEnableDebug({
enableDebug: false
})
// 小程序端
const logger = wx.getRealtimeLogManager()
logger.info({str: 'hello world'}, 'info log', 100, [1, 2, 3])
logger.error({str: 'hello world'}, 'error log', 100, [1, 2, 3])
logger.warn({str: 'hello world'}, 'warn log', 100, [1, 2, 3])
// 插件端,基础库 2.16.0 版本后支持,只允许采用 key-value 的新格式上报
const logManager = wx.getRealtimeLogManager()
const logger = logManager.tag('plugin-log1')
logger.info('key1', 'value1')
logger.error('key2', {str: 'value2'})
logger.warn('key3', 'value3')
【方法】
RealtimeLogManager.info()
写 info 日志,暂不支持在插件使用
RealtimeLogManager.warn()
写 warn 日志,暂不支持在插件使用
RealtimeLogManager.error()
写 error 日志,暂不支持在插件使用
RealtimeLogManager.setFilterMsg(string msg)
设置过滤关键字,暂不支持在插件使用
RealtimeLogManager.addFilterMsg(string msg)
添加过滤关键字,暂不支持在插件使用
【方法】
LogManager.debug()
写 debug 日志
LogManager.info()
写 info 日志
LogManager.log()
写 log 日志
LogManager.warn()
写 warn 日志
【方法】
RealtimeTagLogManager.info(string key, Object|Array.<any>|number|string value)
写 info 日志
RealtimeTagLogManager.warn(string key, Object|Array.<any>|number|string value)
写 warn 日志
RealtimeTagLogManager.error(string key, Object|Array.<any>|number|string value)
写 error 日志
RealtimeTagLogManager.setFilterMsg(string msg)
设置过滤关键字
RealtimeTagLogManager.addFilterMsg(string msg)
添加过滤关键字
wx.navigateTo({
url: 'test?id=1',
events: {
// 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
acceptDataFromOpenedPage: function(data) {
console.log(data)
},
someEvent: function(data) {
console.log(data)
}
...
},
success: function(res) {
// 通过eventChannel向被打开页面传送数据
res.eventChannel.emit('acceptDataFromOpenerPage', { data: 'test' })
}
})
//test.js
Page({
onLoad: function(option){
console.log(option.query)
const eventChannel = this.getOpenerEventChannel()
eventChannel.emit('acceptDataFromOpenedPage', {data: 'test'});
eventChannel.emit('someEvent', {data: 'test'});
// 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
eventChannel.on('acceptDataFromOpenerPage', function(data) {
console.log(data)
})
}
})
【方法】
EventChannel.emit(string eventName, any args)
触发一个事件
EventChannel.on(string eventName, EventCallback fn)
持续监听一个事件
EventChannel.once(string eventName, EventCallback fn)
监听一个事件一次,触发后失效
EventChannel.off(string eventName, EventCallback fn)
取消监听一个事件。给出第二个参数时,只取消给出的监听函数,否则取消所有监听函数
// 注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,而 redirectTo 方法则不会
// 此处是A页面
wx.navigateTo({
url: 'B?id=1'
})
// 此处是B页面
wx.navigateTo({
url: 'C?id=1'
})
// 在C页面内 navigateBack,将返回A页面
wx.navigateBack({
delta: 2
})
wx.setTabBarStyle({
color: '#FF0000',
selectedColor: '#00FF00',
backgroundColor: '#0000FF',
borderStyle: 'white'
})
wx.setTabBarItem({
index: 0,
text: 'text',
iconPath: '/path/to/iconPath',
selectedIconPath: '/path/to/selectedIconPath'
})
wx.setTabBarBadge({
index: 0,
text: '1'
})
selector类似于 CSS 的选择器,但仅支持下列语法:
ID选择器:#the-id
class选择器(可以连续指定多个):.a-class.another-class
子元素选择器:.the-parent > .the-child
后代选择器:.the-ancestor .the-descendant
跨自定义组件的后代选择器:.the-ancestor >>> .the-descendant
多选择器的并集:#a-node, .some-other-nodes
wx.pageScrollTo({
scrollTop: 0,
duration: 300
})
【属性】
boolean scrollEnabled
滚动开关
boolean bounces
设置滚动边界弹性 (仅在 iOS 下生效)
boolean showScrollbar
设置是否显示滚动条
boolean pagingEnabled
分页滑动开关
boolean fastDeceleration
设置滚动减速速率
boolean decelerationDisabled
取消滚动惯性 (仅在 iOS 下生效)
【方法】
ScrollViewContext.scrollTo(Object object)
滚动至指定位置
ScrollViewContext.scrollIntoView(string selector)
滚动至指定位置
wx.createSelectorQuery()
.select('#scrollview')
.node()
.exec((res) => {
const scrollView = res[0].node;
scrollView.scrollEnabled = false;
})
wx.request({
url: 'example.php', //仅为示例,并非真实的接口地址
data: {
x: '',
y: ''
},
header: {
'content-type': 'application/json' // 默认值
},
success (res) {
console.log(res.data)
}
})
wx.downloadFile({
url: 'https://example.com/audio/123', //仅为示例,并非真实的资源
success (res) {
// 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
if (res.statusCode === 200) {
wx.playVoice({
filePath: res.tempFilePath
})
}
}
})
【方法】
DownloadTask.abort()
中断下载任务
DownloadTask.onProgressUpdate(function callback)
监听下载进度变化事件
DownloadTask.offProgressUpdate(function callback)
取消监听下载进度变化事件
DownloadTask.onHeadersReceived(function callback)
监听 HTTP Response Header 事件。会比请求完成事件更早
DownloadTask.offHeadersReceived(function callback)
取消监听 HTTP Response Header 事件
const downloadTask = wx.downloadFile({
url: 'http://example.com/audio/123', //仅为示例,并非真实的资源
success (res) {
wx.playVoice({
filePath: res.tempFilePath
})
}
})
downloadTask.onProgressUpdate((res) => {
console.log('下载进度', res.progress)
console.log('已经下载的数据长度', res.totalBytesWritten)
console.log('预期需要下载的数据总长度', res.totalBytesExpectedToWrite)
})
downloadTask.abort() // 取消下载任务
wx.chooseImage({
success (res) {
const tempFilePaths = res.tempFilePaths
wx.uploadFile({
url: 'https://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址
filePath: tempFilePaths[0],
name: 'file',
formData: {
'user': 'test'
},
success (res){
const data = res.data
//do something
}
})
}
})
【方法】
UploadTask.abort()
中断上传任务
UploadTask.onProgressUpdate(function callback)
监听上传进度变化事件
UploadTask.offProgressUpdate(function callback)
取消监听上传进度变化事件
UploadTask.onHeadersReceived(function callback)
监听 HTTP Response Header 事件。会比请求完成事件更早
UploadTask.offHeadersReceived(function callback)
取消监听 HTTP Response Header 事件
const uploadTask = wx.uploadFile({
url: 'http://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址
filePath: tempFilePaths[0],
name: 'file',
formData:{
'user': 'test'
},
success (res){
const data = res.data
//do something
}
})
uploadTask.onProgressUpdate((res) => {
console.log('上传进度', res.progress)
console.log('已经上传的数据长度', res.totalBytesSent)
console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)
})
uploadTask.abort() // 取消上传任务
wx.requestPayment({
timeStamp: '',
nonceStr: '',
package: '',
signType: 'MD5',
paySign: '',
success (res) { },
fail (res) { }
})
// 云函数代码
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
exports.main = async (event, context) => {
const res = await cloud.cloudPay.unifiedOrder({
"body" : "小秋TIT店-超市",
"outTradeNo" : "1217752501201407033233368018",
"spbillCreateIp" : "127.0.0.1",
"subMchId" : "1900009231",
"totalFee" : 1,
"envId": "test-f0b102",
"functionName": "pay_cb"
})
return res
}
// 小程序代码
wx.cloud.callFunction({
name: '函数名',
data: {
// ...
},
success: res => {
const payment = res.result.payment
wx.requestPayment({
...payment,
success (res) {
console.log('pay success', res)
},
fail (err) {
console.error('pay fail', err)
}
})
},
fail: console.error,
})
// 除 orderInfo 以外,其余字段与 wx.requestPayment 一致
wx.requestOrderPayment({
orderInfo: {},
timeStamp: '',
nonceStr: '',
package: '',
signType: 'MD5',
paySign: '',
success (res) { },
fail (res) { }
})
wx.getImageInfo({
src: 'images/a.jpg',
success (res) {
console.log(res.width)
console.log(res.height)
}
})
wx.chooseImage({
success (res) {
wx.getImageInfo({
src: res.tempFilePaths[0],
success (res) {
console.log(res.width)
console.log(res.height)
}
})
}
})
wx.compressImage({
src: '', // 图片路径
quality: 80 // 压缩质量
})