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


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 相关文章推荐
JavaScript 学习笔记(十二) dom
Jan 21 Javascript
Javascript实现的鼠标经过时播放声音
May 18 Javascript
juqery 学习之三 选择器 简单 内容
Nov 25 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
Jul 25 Javascript
关于include标签导致js路径找不到的问题分析及解决
Jul 09 Javascript
用js编写的简单的计算器代码程序
Aug 04 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
May 21 Javascript
js给table赋值的实例代码
Oct 13 Javascript
Javascript blur与click冲突解决办法
Jan 09 Javascript
JavaScript函数参数的传递方式详解
Mar 06 Javascript
vue 多入口文件搭建 vue多页面搭建的实例讲解
Mar 12 Javascript
jQuery实现电梯导航模块
Dec 22 jQuery
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使用websocket示例详解
2014/03/12 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
2014/12/22 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
详解JavaScript中的every()方法
2015/06/08 Javascript
jQuery实现两个select控件的互移操作
2016/12/22 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
零基础学Python(一)Python环境安装
2014/08/20 Python
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
python获取交互式ssh shell的方法
2019/02/14 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
python监控nginx端口和进程状态
2019/09/06 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
python绘制封闭多边形教程
2020/02/18 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
python 录制系统声音的示例
2020/12/21 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
工商管理专业实习生自我鉴定
2013/09/29 职场文书
销售人员自我评价
2014/02/01 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
领导班子专题民主生活会情况想汇报
2014/09/30 职场文书
2014年科技工作总结
2014/11/26 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
python保存图片的四个常用方法
2022/02/28 Python