结合自己在平时的开发中遇到的各种问题,和浏览各种问题的解决方案总结出一些自己在日常开发中常用的技巧和知点,希望各位不吝斧正。
1.短生命周期数据存储
以小程序启动到彻底关闭为周期的的数据建议存储在app.js文件夹中,引用app.js:
const app =getApp();
假设Value是在小程序本次生命周期中经常使用到的一个数据,比如说请求API的Token,动态的令牌等。那么就可以把这个值赋值到全局变量中去。实际上,并不是只有app.js中的globalData是全局变量,可以自己定义数据集。
App({ eduOS:{ token:'' }, ...})
对于app.js里面的token进行赋值操作很简单,只要页面引用了app.js
app.eduOS.token = Value;
这个数据在小程序的本次启动到彻底关闭后台的周期中就是长期存在的了,还可以根据需要进行修改,Value可以是对象。
2.长生命周期或者隐私数据存储
这种数据的显著特点是在小程序关闭再次重启后依然存在,或者涉及到用户的隐私信息但是需要复用,这种时候可以用本地缓存来解决这种问题。
本地缓存的生命周期: 小程序被开始使用 -----> 小程序被彻底从使用列表中移除。
小程序设置缓存的方式:
wx.setStorage({ key: 'educookie', data: { xh: that.data.xh, pwd: that.data.pwd } })
小程序获取缓存的方式:
var that = this; wx.getStorage({ key: 'educookie', success: function(res) { that.setData({xh:res.data.xh,pwd:res.data.pwd}); }, })
比如保存用户的登陆态信息,但是不能保存用户的隐私数据,就可以采用这种方式。
或者是一个非时效性的数据,可以通过这种方式进行存储。
3.动态信息或配置信息存储
保存用户的配置信息,在更换手机时能迅速完成配置同步。
商家小程序推荐商品修改,或者是内容修正,或者是增加活动,不可能每次都要重写然后再次让小程序进行审核。
对此,可以在后端服务器中保存这个信息。
以一个小程序的轮播广告牌为例:
{ ad1:'imgurl1', ad2:'imgurl2', ad3:'imgurl3'}
把这个数据存放在后台服务器,每一次刷新该页面都请求一次后台数据,对内容进行修改。
wx.request({ url:'XXX', data:{}, success(res){ that.setData({ adList:res.data }) }})
类似这种方式,完成对一些数据的动态控制或者是云同步。
4.页面间数据传递
页面间之间的数据传递一般是简单的,这种类型的数据的生命周期是一次性的,用完即删。
wx.navigatorTo({ url:'../index/index?param1=value1¶m2=value2'})
//在index页面获取onLoad(options){ console.log(options.param1);//value1}
可以参照Http请求中的Get表单传参方式来写页面之间的传参。
如果需要传送的数据太多,可通过Map<key ,Storge>进行传递
wx.setStorge({ key:'xxx', data:mydata})
传递参数只需要传递一个key,在其他界面通过这个key再次去除本地缓存,对于这种类型的数据,建议使用完后即时的删除缓存。
wx.removeStorage({ key: 'xxx', success(res) { console.log(res) }})