微信小程序中的数据存储实现方式

 更新时间:2021年08月20日 15:31:13   作者:HealthyZhang  
这篇文章主要介绍了微信小程序中的数据存储实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

全局变量globalData

在最初创建小程序时,app.js文件中App方法中传入的对象里面默认添加了globalData参数。在所有的页面中我们都可以通过getApp方法获取到这个App方法传入的对象,进而拿到其中的globalData。

const App = getApp();
const openId = App.globalData.openId;
App.globalData.openId = 1;
delete App.globalData.openId;

globalData的值是一个对象,我们可以用对待对象的方式一样调用它。(globalData并非一定叫这个名字)

页面私有变量 data

每个页面的js逻辑层页面都是在Page方法中传入了一个对象。其中data的值一般用来存储当前页面内的变量值。其主要用途是通过setData接口和视图层进行数据交互,从而改变wxml视图层显示内容。

如果不需要将data中的值传入到视图层中,不建议使用setData而是改用对象方式操作。可以有效节省性能。
在页面初始化时,data中的数据都会和视图层进行数据交互。如果进一步处理,我们还可以在对象中添加localData专门存储当前页面所需变量

Page({
 data: {
  openId: 123
 },
 localData: {
  timeStamp: Date.now()
 }
})
this.setData({
 openId: 321
})
this.data.openId = 321;
this.localData.timeStamp = Data.now();

storage

storage也是小程序中很常用的一种存储方式,和全局变量globalData类似。不局限于某个页面,任何位置都可以通过wx提供的接口获取到其中的值。

优点是:可以长期存储,即使退出重新登陆数据不会消失。(上限存储10M)
缺点是:异步行为,每次存取耗时相对较长。
wx提供了增、删、改、查接口(增、改都是一个set接口),下面只举一个存储数据例子:

异步存储(根据设备性能的不同,你还真不知道他会存多久)

wx.setStorage({
 key: 'key',
 data: 'value',
 success: res => {
  ...
 }
})
// 支持promise
wx.setStorage({key: 'key', data: 'value'})
 .then(res => {
  ...
 })

同步存储(会造成阻塞~)

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

文件存储 fileSysteManager

fileSysteManager(下简称fs)可以把文字、图片类型的数据通过文件的方式存储到本地。存储上限10M(之前记得200M,后来翻文档看到的都是10了),长期存储,不删除小程序数据就不会消失。

写入:

const fs = wx.getFileSystemManager();
fs.writeFile({
  filePath: `${wx.env.USER_DATA_PATH}/_l${fileName}.txt`,
  data: JSON.stringify(data),
  encoding: 'utf8',
  success(res) { ... }
})
  • filePath中的 env.userDatapath 是wx分配给当前程序的默认空间,coder可以在其下创建文件夹,添加文件等。
  • fileName是存储数据时的文件名。
  • data是要存储的数据,可以是图片。
  • encoding:编码格式,当data为图片时可已调整为二进制。

读取

存取数据时要牢记文件名和存储位置;

fs.readFile({
  filePath: `${wx.env.USER_DATA_PATH}/_l${fileName}.txt`,
  encoding: 'utf8',
  position: 0,
  success(res) {
 JSON.parse(res.data) 
  }
})

移除

fs.unlink({
  filePath: `${wx.env.USER_DATA_PATH}/_l${fileName}.txt`,
  encoding: 'utf8',
  success(res) {
 ...
  }
})

fs的操作都是异步行为,要注意处理逻辑。

到此这篇关于微信小程序中的数据存储实现方式的文章就介绍到这了,更多相关小程序数据存储内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • js图片实时加载提供网页打开速度

    js图片实时加载提供网页打开速度

    没必要一开始加载就要把全部图片加载出来,这样子打开网面的速度得到了很好提高,下面有个不错的思路,大家可以看看
    2014-09-09
  • 浅谈下拉菜单中的Option对象

    浅谈下拉菜单中的Option对象

    Option 对象代表 HTML 表单中下拉列表中的一个选项。在 HTML 表单中 <option> 标签每出现一次,一个 Option 对象就会被创建。您可通过表单的 elements[] 数组访问一个 Option 对象,或者通过使用 document.getElementById()。
    2015-05-05
  • 为什么js中不推荐使用eval函数(原因分析)

    为什么js中不推荐使用eval函数(原因分析)

    'eval'函数是javascript中的一个内置函数,它的主要作用是将传入的字符串作为代码来执行,这篇文章主要介绍了为什么js中不推荐使用eval函数,需要的朋友可以参考下
    2023-10-10
  • 微信小程序扫描普通二维码跳转到小程序指定页面操作方法

    微信小程序扫描普通二维码跳转到小程序指定页面操作方法

    这篇文章主要给大家介绍了关于微信小程序扫描普通二维码跳转到小程序指定页面操作的相关资料,为了分享方便,或者制作宣传海报之类的,经常需要用到微信小程序指定页面的二维码,让用户扫码直达页面,需要的朋友可以参考下
    2023-08-08
  • 基于JavaScript实现幸运抽奖页面

    基于JavaScript实现幸运抽奖页面

    这篇文章主要为大家详细介绍了基于JavaScript实现幸运抽奖页面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • js控制当再次点击按钮时的间隔时间

    js控制当再次点击按钮时的间隔时间

    这篇文章主要介绍通过js如何控制当再次点击按钮是的间隔时间,需要的朋友可以参考下
    2014-06-06
  • 你有必要知道的10个JavaScript难点

    你有必要知道的10个JavaScript难点

    10个JavaScript难点,你可能还不知道,不着急,本文为大家一一列出,一一攻破,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • javascript实现的时间格式加8小时功能示例

    javascript实现的时间格式加8小时功能示例

    这篇文章主要介绍了javascript实现的时间格式加8小时功能,涉及javascript日期时间转换与运算相关操作技巧,需要的朋友可以参考下
    2019-06-06
  • javascript实现倒计时跳转页面

    javascript实现倒计时跳转页面

    本文给大家介绍了如何使用javascript实现倒计时跳转到其他页面的方法以及实现原理,非常的简单实用,有需要的小伙伴可以参考下。
    2016-01-01
  • 简单实现jquery焦点图

    简单实现jquery焦点图

    这篇文章主要为大家详细介绍了如何简单实现jquery焦点图效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12

最新评论