微信小程序中的本地存储基本上也和 localStorage 是类似的,分为读和写:
- wx.getStorage(异步)
- wx.getStorageSync(同步)
- wx.setStorage(异步)
- wx.setStorageSync(同步)
读取数据
异步的读取,接收一个配置对象,对象里面首先有 key,表示你要读取哪一个数据,因为是异步,所以读取到的数据会传给 success 回调函数,如果读取失败,那么会触发 fail 回调函数
wx.getStorage({
key : ...,
success(){
// 读取成功后的回调
},
fail(){
// 读取失败时的回调
}
})
同步的读取,直接将读取到的值取出来使用即可:
var value = wx.getStorageSync(key);
写入数据
写入实际上也很简单,首先我们来看一下异步写入,使用到的是 wx.setStorage
wx.setStorage({
key : ...,
data : ..., // 要写入的数据
success(){
// 写入成功后的回调
},
fail(){
// 写入失败时的回调
}
})
如果是同步写入,传入两个参数,如下:
wx.setStorageSync('key', 'value2')
从 2.21.3 版本开始,往本地存储写入数据时,可以进行一个加密的操作,只需要配置 encrypt 为 true 即可。
但是有一些注意事项:
- 只有异步的存储支持加密(因为加密的时候,回调耗时会增加,所以只能采用异步的方式)
- 如果进行了加密存储,在获取数据的时候,同样需要将 encrypt 设置为 true 进行解密
- 因为加密后字符串的长度会膨胀,所以每个 key 最大存储的长度变为了 0.7MB,最大的存储上线由之前的 10MB变为了 7.1MB
缓存限制和隔离
- 不同小程序的本地缓存空间是分开的,即便是同一个小程序,但是不同的用户之间,也是分开的
- 每个小程序的缓存空间的上限为10M,如果超过了10M再往缓存里面写入,就会触发 fail 的回调
除了上面介绍到的获取和设置本地数据,常用还有:
- wx.removeStorage:从本地缓存中移除指定 key。
- wx.removeStorageSync:上面方法的同步版本
- wx.clearStorage:清空整个本地存储
- wx.clearStorageSync:上面方法的同步版本
本节课结束后,请通读官方文档对应的:https://developers.weixin.qq.com/ebook?action=get_post_info&docid=000a2c7c9f4a981b0086bd31e5b40a
特别是是官方文档举了两个使用本地存储的需求案例:
- 利用本地缓存提前渲染界面
- 缓存用户登录态SessionId