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


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 相关文章推荐
Jquery 组合form元素为json格式,asp.net反序列化
Jul 09 Javascript
基于jquery的blockui插件显示弹出层
Apr 14 Javascript
js 判断脚本加载完毕的代码
Jul 13 Javascript
推荐JavaScript实现继承的最佳方式
Nov 11 Javascript
详解JavaScript时间格式化
Dec 23 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
Dec 25 Javascript
Jquery跨域获得Json的简单实例
May 18 Javascript
JavaScript类型系统之布尔Boolean类型详解
Jun 26 Javascript
JavaScript 总结几个提高性能知识点(推荐)
Feb 20 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
Dec 16 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
Mar 23 Javascript
React更新渲染原理深入分析
Dec 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
php获取url参数方法总结
2014/11/13 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
Javascript与flash交互通信基础教程
2008/08/07 Javascript
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
jquery struts 验证唯一标识(公用方法)
2013/03/27 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
js表单验证实例讲解
2016/03/31 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
浅谈键盘上回车按钮的js触发事件
2017/02/13 Javascript
详解在Angular项目中添加插件ng-bootstrap
2017/07/04 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
2017/08/14 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
微信小程序左右滑动的实现代码
2017/12/15 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
2018/09/18 Javascript
详解Vue 单文件组件的三种写法
2020/02/19 Javascript
python使用urllib2提交http post请求的方法
2015/05/26 Python
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
经典大学生求职信范文
2014/01/06 职场文书
乡镇三项教育实施方案
2014/03/30 职场文书
团队经理竞聘书
2014/03/31 职场文书
五一活动标语
2014/06/30 职场文书
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python
mysql insert 存在即不插入语法说明
2022/03/25 MySQL
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers