美文网首页微信小程序开发者微信小程序
微信小程序系列之使用缓存在本地模拟服务器数据库

微信小程序系列之使用缓存在本地模拟服务器数据库

作者: AJMAN | 来源:发表于2018-08-25 21:55 被阅读9次

微信小程序系列之使用缓存在本地模拟服务器数据库

现在将data.js这个文件视作是本地数据库的初始化数据,要做的第一件事就是讲这些初始化数据装进缓存中,以形成数据库的初始化数据

整个应用程序的生命周期,类比一下页面的生命周期,在页面的js文件中,我们使用Page(object)来注册页面,并在object中指定页面的生命周期函数,同样可以在app.js中使用App(object)来注册小程序,并在object中指定小程序的生命周期函数

onLaunch 监听小程序的初始化,当小程序初始化完成时,会触发onLaunch(全局只触发一次)

onShow 监听小程序的显示,当小程序启动或者从后台进入前台时,会触发onShow的事件

onHide 监听小程序的隐藏,当小程序从前台进入到后台时

onError 监听小程序的错误,发生错误时会触发onError

当然,还可以自己任意添加函数到Objectc参数中,用this可以访问这些函数和数据

最好的初始化数据是在应用程序启动时

app.js中植入数据

var dataObj=require("data/data.js")

App({

  onLaunch:function(){//初始化

    wx.setStorage({//缓存数据

      key: 'postData',

      data: 'dataObj.postList',//需要存储的内容

      success:function(res){//缓存成功。调用

      },

      fail: function (res) {//缓存失败调用函数

      },

      complete: function (res) {//缓存完整,调用

      },

    })

  }

})

在上面代码中,首先通过require加载data.js作为初始化数据,在应用程序中onLaunch使用wx.setStorage方法将数据存入到缓存中(key:"postData" data:"dataObj.postList")

只要用户不主动清除缓存,则缓存一直存在

缓存以key:value键值对的形式存在,很类似于服务器流行的memcache或者redis缓存型数据库

小程序提供了一系列API用来操作缓存,包括:存储,读取,移除,清除全部,和获取缓存信息

请注意清除和移除,删除某一个key的缓存,请使用wx.removeStrorage方法,删除所有的wx.clearStorage,不存在过期时间,如果想清除缓存,则需要主动调用清除缓存的API

所有的异步API都会有success,fail,complete

key用来设置缓存的键,data是用来缓存的数据

异步缓存:

var dataObj=require("data/data.js")

App({

  onLaunch:function(){

  //  wx.setStorage({//异步缓存

  //    key: 'postData',

  //    data: 'dataObj.postList',

  //    success:function(res){

  //    },

  //    fail: function () {

  //    },

  //    complete: function () {

  //    },

  //  })

  //同步缓存

  wx.setStorageSync('postData', 'dataObj.postList')

  }

})

同步缓存的方法wx.setStorageSync是在异步方法名中wx.setStorageSync后面加上Sync,其他的异步方法也是加上sync,,没有success,fail,complete方法,建议优先使用同步方法

小程序每一次启动就会执行一次require和一次setStorageSync,这是非常麻烦的,我们应当让数据库在不存在时候,才会缓存数据。要不然每一次数据修改就会被初始化数据覆盖

App({//数据初始化判断

  onLaunch:function(){

  //  wx.setStorage({//异步缓存

  //    key: 'postData',

  //    data: 'dataObj.postList',

  //    success:function(res){

  //    },

  //    fail: function () {

  //    },

  //    complete: function () {

  //    },

  //  })

  //同步缓存

优化缓存的初始化判断:

  var storageData=wx.getStorageSync('postData');

if(!storageData){

  var dataObj = require("data/data.js");

  wx.clearStorageSync();

  wx.setStorageSync('postData', 'dataObj.postList')

}

  // wx.setStorageSync('postData', 'dataObj.postList')

  }

})

wx.getStorageSync(key)这个方法可以首先获取指定的key的值缓存内容,如果没有则指定的key的缓存不存在,先清除所有的缓存,wx.clearStorage(),才开始初始化数据库,避免了每次都要初始化数据库

第一次写文章,不足之处多多指教

相关文章

网友评论

    本文标题:微信小程序系列之使用缓存在本地模拟服务器数据库

    本文链接:https://www.haomeiwen.com/subject/fzxniftx.html