关于小程序开发中遇到的相关问题以及总结

包括钉钉以及微信的相关

1.钉钉小程序主要有几个方面,包括企业内部使用,第三方企业或者个人,这几个申请时稍有不同,官网都有介绍
2.钉钉开放平台在点击这里
3.关于钉钉小程序的开发可以使用他提供的原生api,也可以使用支付宝的多端开发去开发
4.网络请求方面,如果有连续的网络嵌套请求,会出现后续请求不通,请求失败,此时可以在网络请求部分添加如下代码解决,加入impl:'dt'即可,或者网络请求套一个延时器

网络请求.jpg

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给一个延迟加载,解决此类问题

暂时更新到这里,后续如果遇到补更。。。

你可能感兴趣的:(关于小程序开发中遇到的相关问题以及总结)