包括钉钉以及微信的相关
1.钉钉小程序主要有几个方面,包括企业内部使用,第三方企业或者个人,这几个申请时稍有不同,官网都有介绍
2.钉钉开放平台在点击这里
3.关于钉钉小程序的开发可以使用他提供的原生api,也可以使用支付宝的多端开发去开发
4.网络请求方面,如果有连续的网络嵌套请求,会出现后续请求不通,请求失败,此时可以在网络请求部分添加如下代码解决,加入impl:'dt'即可,或者网络请求套一个延时器
5.关于页面传递参数,建议传递对象时使用encodeURIComponent(JSON.stringify(params))包裹,防止对象过大导致传递有问题
encodeURIComponent(JSON.stringify(obj))为跳转url时的转换方法。
JSON.parse(decodeURIComponent(options.obj))为接收参数页面的转换方法。
6.当页面之间传递对象时需要考虑对象的深拷贝和浅拷贝问题
先JSON.stringify(obj)存起来
用的时候再JSON.parse(obj)转换
7.如何使用Promise封装网络请求(参考,微信钉钉都可使用类似方法)
return new Promise((resolve, reject) => {
wx.request({
url: url,
data: params,
timeout: 10000,
method: method,
dataType: 'json',
headers: {
"content-type": ContentType
},
complete: res => {
if (requestObj.showLoading === undefined) {
wx.hideLoading()
}
console.log(res)
if (res.statusCode >= 200 && res.statusCode < 300) {
let responseData = res.data
if (responseData.success) {
resolve(responseData.result)
} else {
reject(responseData.message);
setTimeout(() => {
getApp().toast(responseData.message)
}, 200);
}
} else {
setTimeout(() => {
getApp().toast(res.errMsg)
}, 200);
reject(res)
}
}
})
})
在app.js中引入网络请求的对象,使用的时候如下
getApp().getHttpRequest().get({
url: app.getUrl().APP_URL,
params: {
...searchParams,
page: currentPage,
size: 20
},
showLoading: false
}).then(res => {
}, err => {
console.log('-------->', err)
}).catch(e => {
})
多个网络请求嵌套可以在第一个请求成功后return下一个网络请求
getApp().getHttpRequest().get({
url: app.getUrl().APP_URL ,
params: {
versionId: options.versionId,
statId: options.id
}
}).then(res => {
return getApp().getHttpRequest().get({
url: app.getUrl().APP_URL,
params: {
res:res
},
})
}).then(res => {
this.handlerResult(res)
}).catch(e => {
})
8.全局日志控制
//重写console.log方法,判断是否开启日志调试模式,否则就不输出
console.log = (function(oriLogFunc) {
return function() {
if (getApp().globalData.debug) { //判断配置文件是否开启日志调试
oriLogFunc.call(console, ...arguments);
}
}
})(console.log);
9.钉钉小程序如果配置tab页,tab页不要设置allowsBounceVertical:'NO',别的页面可以设置,会引起系统自带刷新api失效
10.钉钉小程序可以使用第三方组件库,参考使用点击这里
11.微信小程序在处理数组遍历的时候需要判断数组是否为null,不然会引起setData出现问题
12.关于递归返回值问题
如果要返回满足条件的值,那么每次调用递归函数都需要返回
const value = this.getItem(...)
if (value) {
return value
}
13.关于小程序页面初始化之后立刻请求网络会产生卡顿的问题,建议在onload给一个延迟加载,解决此类问题
暂时更新到这里,后续如果遇到补更。。。