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


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 相关文章推荐
网页和浏览器兼容性问题汇总(draft1)
Jun 01 Javascript
jquery+json实现的搜索加分页效果
Mar 31 Javascript
jquery中的事件处理详细介绍
Jun 24 Javascript
jquery ready函数、css函数及text()使用示例
Sep 27 Javascript
举例讲解AngularJS中的模块
Jun 17 Javascript
深入解析JavaScript中的数字对象与字符串对象
Oct 21 Javascript
Bootstrap每天必学之标签与徽章
Nov 27 Javascript
利用node.js制作命令行工具方法教程(一)
Jun 22 Javascript
VUE axios上传图片到七牛的实例代码
Jul 28 Javascript
mpvue小程序仿qq左滑置顶删除组件
Aug 03 Javascript
用Cordova打包Vue项目的方法步骤
Feb 02 Javascript
layUI实现前端分页和后端分页
Jul 27 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函数和特点
2013/08/08 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
jQuery 使用手册(五)
2009/09/23 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
文档对象模型DOM通俗讲解
2013/11/01 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
在JavaScript中操作数组之map()方法的使用
2015/06/09 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
JSON字符串和对象相互转换实例分析
2016/06/16 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
js时间戳与日期格式之间相互转换
2017/12/11 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
[47:45]Liquid vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python将人民币转换大写的脚本代码
2013/02/10 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
Python count函数使用方法实例解析
2020/03/23 Python
HTML5实现经典坦克大战坦克乱走还能发出一个子弹
2013/09/02 HTML / CSS
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
空字符串(“”)和null的区别
2012/11/13 面试题
工作中个人的自我评价
2013/12/31 职场文书
医院辞职信范文
2014/01/17 职场文书
服务员岗位职责
2015/02/03 职场文书
网络管理员岗位职责
2015/02/12 职场文书
利用Python+OpenCV三步去除水印
2021/05/28 Python
新手初学Java网络编程
2021/07/07 Java/Android
Python实现PIL图像处理库绘制国际象棋棋盘
2021/07/16 Python
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android
python双向链表实例详解
2022/05/25 Python