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


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代码
Dec 26 Javascript
jquery学习笔记 用jquery实现无刷新登录
Aug 08 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
Oct 12 Javascript
基于JQuery 选择器使用说明介绍
Apr 18 Javascript
js浮点数精确计算(加、减、乘、除)
Dec 26 Javascript
js从Cookies里面取值的简单实现
Jun 30 Javascript
js控制文本框只输入数字和小数点的方法
Mar 10 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
Jan 04 Javascript
利用CSS3在Angular中实现动画
Jan 15 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
Sep 11 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
Dec 19 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
Apr 08 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中session_unset与session_destroy的区别分析
2011/06/16 PHP
php读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
php实现计数器方法小结
2015/01/05 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
详解WordPress中给链接添加查询字符串的方法
2015/12/18 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
Javascript中Event属性搜集整理
2013/09/17 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
javascript实现Email邮件显示与删除功能
2015/11/21 Javascript
js简单网速测试方法完整实例
2015/12/15 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
2018/04/08 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
js实现微信聊天界面
2020/08/09 Javascript
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
2020/05/18 Python
python中怎么表示空值
2020/06/19 Python
python 调用API接口 获取和解析 Json数据
2020/09/28 Python
优秀团员个人的自我评价
2013/10/02 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
人工作失职检讨书
2015/05/05 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
实习感想范文
2015/08/10 职场文书
《植物妈妈有办法》教学反思
2016/02/23 职场文书
委托书范本格式
2019/04/18 职场文书
导游词之开封禹王台风景区
2019/12/02 职场文书
MySQL慢查询的坑
2021/04/28 MySQL
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
浅谈redis整数集为什么不能降级
2021/07/25 Redis