返回顶部
首页 > 资讯 > 前端开发 > html >微信小程序如何实现本地数据存储
  • 371
分享到

微信小程序如何实现本地数据存储

2024-04-02 19:04:59 371人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关微信小程序如何实现本地数据存储的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。微信小程序 本地数据存储实例详解前言如果您在看此文章之前有过其他程序的开发经

这篇文章给大家分享的是有关微信小程序如何实现本地数据存储的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

微信小程序 本地数据存储实例详解

前言

如果您在看此文章之前有过其他程序的开发经验,那一定会知道一般例如安卓或者苹果的原生APP都提供了本地的存储功能,甚至可以使用sqlite数据库来做存储。可是微信小程序框架基于微信本身,其实际运行环境只是在浏览器里面,所以不会提供那么丰富的数据存储实力。但HTML5开始已经可以在浏览器里面存储数据,好在微信的小程序给这个功能封装好了,这样我们可以使用数据存储。

每个微信小程序都可以有自己的本地缓存,可以通过 wx.setStorage(wx.setStorageSync)

wx.getStorage(wx.getStorageSync)、 
wx.clearStorage(wx.clearStorageSync)

可以对本地缓存进行设置、获取和清理。本地缓存最大为10MB。

上面的set和get都有对应的Sync方法,带Sync的方法为同步方法、不带Sync的方法为异步方法。

设置缓存都需要设置一个key和对应的data值,我们在《微信web开发工具》中的调试状态下可以点击调试窗口的Storage 栏来查看我们缓存在本地的数据。

缓存可以保存数组、数值、字符串、对象。

设置缓存

提供setStorage和setStorageSync两个接口,并且在使用设置存储方法时,如果小程序的存储值当中已经存在对应的key的值,那么会使用新的值替换原来的值。

setSotrage接口

wx.setStorage({
 key:"key",
 data:"value",
 success:function(res){console.log(res)},
 fail:function(res){console.log(res)},
 complete:function(res){console.log(res)},
})
//Object {errMsg: "setStorage:ok"}
//Object {errMsg: "setStorage:ok"}

setStorageSync接口

因为该方法为同步接口,所以直接设置key和data:

wx.setStorageSync('key', 'value')

上面两个demo中我们都使用了字符串缓存,当然我们也可以缓存一个对象,例如:

wx.setStorage({key:"ob",data:{name:'smallerpig',sex:1,age:18}})

获取缓存

getSotrage接口

异步接口,所以我们可以定义几个回调:

wx.getStorage(
{
 key:'key',
 success:function(res){
  console.log(res)//Object {errMsg: "getStorage:ok", data: "value1"}
 },
 fail:function(res){console.log(res)},
 complete:function(res){console.log(res)}
})

其中,我们可以看出来,微信小程序的很多异步接口的回调都会给出三个回调:success、fail、complete,在执行成功的时候回执行success、complete回调;在执行失败之后会分别执行fail、complete回调。

getSotrageSync接口

该接口为同步接口,所以只需传递对应的key值就可以了。如下列代码:

wx.getStorageSync('ob')
//Object {name: "smallerpig", sex: 1, age: 18}

获取当前存储总结

使用wx.getStorageInfo接口

例如下列代码:

wx.getStorageInfo({
 success: function(res) {
 console.log(res.keys)
 console.log(res.currentSize)
 console.log(res.limitSize)
 }
//["logs", "r3session", "key"]0: "logs"1: "r3session"2: "key"]
//1
//10240
})

也可以使用同步接口wx.getStorageInfoSync。

缓存的使用

在上一篇文章中,小猪介绍了如何解密通过wx.getUserInfo接口获取到的cryptedData数据。其中的session_key小猪是写在flask的缓存中,缓存的键是写死为:xcx_session_key。在真实环境中我们不能够这样写,因为这样不同的用户获取到的session_key是相同的,所以我们需要给不同的用户附上不同的缓存key。把flask的缓存key返回给微信小程序,小程序中可以固定一个key值,data值保持flask后台给到的值。

说的比较绕,这里需要读者好好理解下。

在flask的代码的使用code获取session_key中,使用下列代码:

@app.route('/user/getuserinfo', methods=['GET', 'POST'])
def getuserinfo():
 code = request.data
 url = 'https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code' % (appid, secret, code)
 r = requests.get(url)
 j = JSON.loads(r.text)
 r3session_key = binascii.hexlify(os.urandom(64))
 cache.set(r3session_key, j['session_key'])
 return r3session_key

接下来,在wx.request的回调中把flask中返回的r3session_key保存起来:

wx.request({
 url: 'Https://***.smallerpig.com/user/getuserinfo',
 data: r.code,
 method: 'POST',
 success: function(res){
 wx.setStorageSync('r3session', res.data)
 }
})

再接下来,在调用wx.getUserInfo时将返回的数据加上从微信小程序本地缓存中取到的r3session丢给flask来处理,flask根据来的r3session从本地服务器的flask缓存中取到微信的值解密cryptedData。这才是一个完整的过程。

小程序的getUserInfo代码:

wx.getUserInfo({
 success: function (res) {
 that.globalData.userInfo = res.userInfo
 typeof cb == "function" && cb(that.globalData.userInfo)
 //将本地存储中的r3session值也同样传递到我的服务器,在服务器中找出微信给到我们的session_key
 var r3session = wx.getStorageSync('r3session')
 res.r3session = r3session
 wx.request({
  url: 'https://***.smallerpig.com/user/getuseruNIOnid',
  data: res,
  success: function(res){
  // success
  console.log(res)
  },
 })
 }
})

对应的flask代码:

@app.route('/user/getuserunionid', methods=['GET', 'POST'])
def getuserid():
 r = json.loads(request.data)
 encryptedData = r['encryptedData']
 iv = r['iv']
 xcx_session_key = r['r3session']
 session_key = cache.get(xcx_session_key) # 从缓存中取出对应r3session对应的session_key
 pc = WXBizDataCrypt(appid, session_key)
 return pc.decrypt(encryptedData, iv)

感谢各位的阅读!关于“微信小程序如何实现本地数据存储”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 微信小程序如何实现本地数据存储

本文链接: https://lsjlt.com/news/70347.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 微信小程序如何实现本地数据存储
    这篇文章给大家分享的是有关微信小程序如何实现本地数据存储的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。微信小程序 本地数据存储实例详解前言如果您在看此文章之前有过其他程序的开发经...
    99+
    2024-04-02
  • 微信小程序中如何实现本地数据缓存功能
    小编给大家分享一下微信小程序中如何实现本地数据缓存功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体如下:前面介绍了微信小程序获取位置信息操作。这里再来介绍一下微信小程序的本地数据缓存...
    99+
    2024-04-02
  • 微信小程序本地存储(wx.setStorage)和(wx.setStorageSync)
     在微信小程序中,可以使用本地存储来保存一些数据比如用户状态,姓名,性别等; 本地存储主要包括两种方式:缓存和本地数据存储。 缓存 缓存是一种快速访问内存的临时存储机制,可以有效地提高应用程序的响应速度。在微信小程序中,可以使用wx....
    99+
    2023-09-17
    微信小程序 小程序
  • 微信小程序如何实现本地缓存数据增删改查功能
    小编给大家分享一下微信小程序如何实现本地缓存数据增删改查功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信小程序本地缓存数据...
    99+
    2024-04-02
  • 微信小程序中的数据存储实现方式
    目录全局变量globalData 页面私有变量 datastorage异步存储(根据设备性能的不同,你还真不知道他会存多久) 同步存储(会造成阻塞~) 文件存储 fileSysteM...
    99+
    2024-04-02
  • 微信小程序本地存储如何实现每日签到、连续签到功能
    这篇文章给大家分享的是有关微信小程序本地存储如何实现每日签到、连续签到功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。先说说相关注意吧:其一就是 storage中只能存放字符串...
    99+
    2024-04-02
  • 微信小程序使用本地存储方法(wx.setStorageSync()和wx.getStorageSync())
    微信小程序的本地存储可以使用wx.setStorageSync()和wx.getStorageSync()方法实现,这里为您介绍一下使用本地存储的流程。 设置数据:使用wx.setStorageSync()方法可以将数据以键值对的方式存储到...
    99+
    2023-09-01
    微信小程序 小程序
  • 微信小程序如何实现数据遍历
    小编给大家分享一下微信小程序如何实现数据遍历,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!制作数据遍历的步骤在index.js中...
    99+
    2024-04-02
  • 微信小程序实现本地分页加载
    本文实例为大家分享了微信小程序实现本地分页加载的具体代码,供大家参考,具体内容如下 先看看效果图: 下面附上代码:(这些图片的地址记得改成自己的) 1、js文件: // pages...
    99+
    2024-04-02
  • 微信小程序中如何实现地图map
    这篇文章主要介绍微信小程序中如何实现地图map,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!微信小程序 地图map微信小程序map地图属性名类型默认值说明longitudeNumbe...
    99+
    2024-04-02
  • 微信小程序中如何实现map地图
    小编给大家分享一下微信小程序中如何实现map地图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言微信小程序地图操作比较简单,a...
    99+
    2024-04-02
  • 微信小程序如何实现地图划线
    这篇文章将为大家详细讲解有关微信小程序如何实现地图划线,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。微信小程序地图划线,是小程序很基本的功能,那么小程序地图划线要怎么实现呢。var point&...
    99+
    2023-06-26
  • 微信小程序中本地存储及登录页面处理的实例
    这篇文章主要介绍了微信小程序中本地存储及登录页面处理的实例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。登录界面:在app.json中添加登...
    99+
    2024-04-02
  • 微信小程序中怎么存储和查询数据
    在微信小程序中,可以使用小程序的本地存储功能来存储和查询数据。这可以通过微信小程序的wx.setStorageSync和wx.get...
    99+
    2024-04-09
    微信小程序
  • 微信小程序如何使用wx.saveFile保存文件到本地
    这篇“微信小程序如何使用wx.saveFile保存文件到本地”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“微信小程序如何使用wx.saveFile保存文件到本地”,小编整理了以下知识点,请大家...
    99+
    2023-06-26
  • 微信小程序中本地数据读取的方法
    小编给大家分享一下微信小程序中本地数据读取的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信小程序 本地数据读取实例一般情...
    99+
    2024-04-02
  • 微信小程序如何实现用户数据解密
    小编给大家分享一下微信小程序如何实现用户数据解密,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信小程序 用户数据解密官方指引图...
    99+
    2024-04-02
  • 如何实现微信小程序中的数据侦听
    这篇文章将为大家详细讲解有关如何实现微信小程序中的数据侦听,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在小程序项目中, 我们的通常会使用到使用到一个全局对象作为各个页面...
    99+
    2024-04-02
  • 如何实现小程序的数据存储与管理
    小程序的数据存储与管理可以通过以下几种方式实现: 使用小程序自带的本地存储功能:小程序可以使用本地存储功能(如wx.setSto...
    99+
    2024-04-17
    小程序
  • 微信小程序如何实现slider
    这篇文章给大家分享的是有关微信小程序如何实现slider的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现效果图:滑动选择器属性名类型默认值说明minNumber0最小值maxN...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作