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

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

作者: 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