微信小程序缓存支持二次开发封装实现解析


Posted in Javascript onDecember 16, 2019

这篇文章主要介绍了微信小程序缓存支持二次开发封装实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

简介

微信小程序提供了缓存的api,包括同步和异步两种,具体api不多说明,可自行查看官方文档

现在微信小程序缓存api存在一个问题就是没有设定过期时间,下面给大家介绍一下对小程序缓存的二次封装,使其支持设定过期时间

实现方法

先声明,这个并非原创方法,只是查找资料的时候看到的,觉得挺有用,就记录下来,也算转播给大家

原作链接:https://gitee.com/JiangMu/wcache,侵删

微信小程序缓存是永久性,实际开发中需要定制时效性缓存;因此做了二次开发

设置缓存-----------put(k, v, t) k为key,v为具体内容(支持字符串、json、数组、boolean等等),t为可选参数表示有效时间(单位:秒)如存储k为123过期时间1秒,

则调用put('k', '123', 1)方法;若永久存储调用put('k', '123') 永久保存json:put('k', {"a":"1"}),数组、boolean等同理。

function put(k, v, t) {
 wx.setStorageSync(k, v)
 var seconds = parseInt(t);
 if (seconds > 0) {
  var timestamp = Date.parse(new Date());
  timestamp = timestamp / 1000 + seconds;
  wx.setStorageSync(k + dtime, timestamp + "")
 } else {
  wx.removeStorageSync(k + dtime)
 }
}

读取缓存-----get(k, def)-------def(自定义读取失败的默认值) k为key,def为可选参数,表示无缓存数据时返回值(支持字符串、json、数组、boolean等等)

如读取k缓存,则调用get('k');若想要无缓存时,返回默认值则get('k','默认值'),支持各个数据类型。

function get(k, def) {
 var deadtime = parseInt(wx.getStorageSync(k + dtime))
 if (deadtime) {
  if (parseInt(deadtime) < Date.parse(new Date()) / 1000) {
   if (def) { return def; } else { return; }
  }
 }
 var res = wx.getStorageSync(k);
 if (res) {
  return res;
 } else {
  return def;
 }
}

remove(k)移除某个key

clear()清空所有key

完整代码:

var dtime = '_deadtime';
function put(k, v, t) {
 wx.setStorageSync(k, v)
 var seconds = parseInt(t);
 if (seconds > 0) {
  var timestamp = Date.parse(new Date());
  timestamp = timestamp / 1000 + seconds;
  wx.setStorageSync(k + dtime, timestamp + "")
 } else {
  wx.removeStorageSync(k + dtime)
 }
}

function get(k, def) {
 var deadtime = parseInt(wx.getStorageSync(k + dtime))
 if (deadtime) {
  if (parseInt(deadtime) < Date.parse(new Date()) / 1000) {
   if (def) { return def; } else { return; }
  }
 }
 var res = wx.getStorageSync(k);
 if (res) {
  return res;
 } else {
  return def;
 }
}

function remove(k) {
 wx.removeStorageSync(k);
 wx.removeStorageSync(k + dtime);
}

function clear() {
 wx.clearStorageSync();
}

module.exports = {
 put: put,
 get: get,
 remove: remove,
 clear: clear,
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
求得div 下 img的src地址的js代码
Feb 28 Javascript
jquery中使用ajax获取远程页面信息
Nov 13 Javascript
js如何实现设计模式中的模板方法
Jul 23 Javascript
jQuery中after()方法用法实例
Dec 25 Javascript
JQuery选择器绑定事件及修改内容的方法
Jan 23 Javascript
jQuery实现购物车表单自动结算效果实例
Aug 10 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
Nov 16 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
Nov 24 Javascript
JavaScript中的各种操作符使用总结
May 26 Javascript
前端弹出对话框 js实现ajax交互
Sep 09 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
Mar 06 Javascript
vue2单元测试环境搭建
May 24 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
Dec 16 #Javascript
ant-design-vue 实现表格内部字段验证功能
Dec 16 #Javascript
js DOM的事件常见操作实例详解
Dec 16 #Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
Dec 16 #Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
Dec 16 #Javascript
javascript自定义右键菜单插件
Dec 16 #Javascript
js中的面向对象之对象常见创建方法详解
Dec 16 #Javascript
You might like
PHP 事务处理数据实现代码
2010/05/13 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
来自chinaz的ajax获取评论代码
2008/05/03 Javascript
jQuery TextBox自动完成条
2009/07/22 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
js设置文字颜色的方法示例
2016/12/30 Javascript
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
[08:40]Navi Vs Newbee
2018/06/07 DOTA
python海龟绘图实例教程
2014/07/24 Python
用Python的pandas框架操作Excel文件中的数据教程
2015/03/31 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
Python快速从注释生成文档的方法
2016/12/26 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
Python函数中不定长参数的写法
2019/02/13 Python
解决Djang2.0.1中的reverse导入失败的问题
2019/08/16 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
快速创建python 虚拟环境
2020/11/28 Python
物流专业大学应届生求职信
2013/11/03 职场文书
司机职责范本
2014/03/08 职场文书
土建施工员岗位职责
2014/07/16 职场文书
平安家庭事迹材料
2014/12/20 职场文书
个人典型事迹材料
2014/12/30 职场文书
2015年财政所工作总结
2015/04/25 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL
python通过函数名调用函数的几种方法总结
2021/06/07 Python
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL