微信小程序數(shù)據(jù)的生命周期

轉(zhuǎn)自:微信開放社區(qū)
作者:kindear
微信小程序的數(shù)據(jù)存儲(chǔ)分為三種方式,生命周期如下:
globalData:存儲(chǔ)短期數(shù)據(jù),引入 app.js 可訪問,徹底關(guān)閉小程序數(shù)據(jù)消失
Storage:存儲(chǔ)長(zhǎng)期數(shù)據(jù),全局可訪問,移除小程序數(shù)據(jù)消失
后端服務(wù)器:存儲(chǔ)跨設(shè)備的數(shù)據(jù),通過后端授權(quán)后可訪問,只要服務(wù)器不炸數(shù)據(jù)永存
一、短生命周期數(shù)據(jù)存儲(chǔ)
以小程序啟動(dòng)到徹底關(guān)閉為周期的的數(shù)據(jù)建議存儲(chǔ)在 app.js 文件夾中,引用 app.js:
const app =getApp();
假設(shè) Value 是在小程序本次生命周期中經(jīng)常使用到的一個(gè)數(shù)據(jù),比如說請(qǐng)求 API 的 token、動(dòng)態(tài)的令牌等。那么就可以把這個(gè)值賦值到全局變量中去。實(shí)際上并不是只有 app.js 中的 globalData 是全局變量,也可以自己定義數(shù)據(jù)集。
App({
HG:{
token:''
},
...
})
對(duì)于 app.js 里面的 token 進(jìn)行賦值操作很簡(jiǎn)單,只要頁(yè)面引用了 app.js。
app.HG.token = Value;
這個(gè)數(shù)據(jù)在小程序的本次啟動(dòng)到徹底關(guān)閉的周期中就會(huì)一直存在了,還可以根據(jù)需要進(jìn)行修改。Value 也可以是對(duì)象。
二、長(zhǎng)生命周期或者隱私數(shù)據(jù)存儲(chǔ)
這種數(shù)據(jù)的顯著特點(diǎn)是在小程序關(guān)閉再次重啟后依然存在,這種時(shí)候可以用本地緩存來解決這種問題。
本地緩存的生命周期:小程序被開始使用 ——> 小程序被徹底從使用列表中移除。
設(shè)置緩存的方式:
wx.setStorage({
key: 'hgcookie',
data: {
xh: that.data.xh,
pwd: that.data.pwd
}
})
小程序獲取緩存的方式:
var that = this;
wx.getStorage({
key: 'hgcookie',
success: function (res) {
that.setData({
xh: res.data.xh,
pwd: res.data.pwd
});
},
})
比如保存用戶的登陸態(tài)信息,就可以采用這種方式,但處于安全考慮是不能保存用戶的隱私數(shù)據(jù)。同時(shí)如果是非時(shí)效性的數(shù)據(jù),也可以通過這種方式進(jìn)行存儲(chǔ)。
三、動(dòng)態(tài)信息或配置信息存儲(chǔ)
后端服務(wù)器保存用戶的配置信息,在更換手機(jī)時(shí)能迅速完成配置同步。
商家小程序推薦商品修改、內(nèi)容修正、增加活動(dòng)等,不可能每次都要重寫然后再次讓小程序進(jìn)行審核。
對(duì)此,可以在后端服務(wù)器中保存這個(gè)信息。
以一個(gè)小程序的輪播廣告牌為例:
{
ad1:'imgurl1',
ad2:'imgurl2',
ad3:'imgurl3'
}
把這個(gè)數(shù)據(jù)存放在后臺(tái)服務(wù)器,每一次刷新該頁(yè)面都請(qǐng)求一次后臺(tái)數(shù)據(jù),對(duì)內(nèi)容進(jìn)行修改。
wx.request({
url:'XXX',
data:{},
success(res){
that.setData({
adList:res.data
})
}
})
可以用類似這種方式,完成對(duì)一些數(shù)據(jù)的動(dòng)態(tài)控制或者是云同步。
?? 關(guān)注「HelloGitHub」第一時(shí)間收到更新??
