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


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 二维数组
Nov 26 Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
Aug 24 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
Jun 18 Javascript
JavaScript删除指定子元素代码实例
Jan 13 Javascript
JavaScript常用脚本汇总(二)
Mar 04 Javascript
jQuery实现高亮显示的方法
Mar 10 Javascript
解决JS无法调用Controller问题的方法
Dec 31 Javascript
使用JavaScript为一张图片设置备选路径的方法
Jan 04 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
Jun 11 Javascript
vue.js 实现点击展开收起动画效果
Jul 07 Javascript
详解微信小程序自定义组件的实现及数据交互
Jul 22 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中的时间显示
2007/01/18 PHP
php中定义网站根目录的常用方法
2010/08/08 PHP
header跳转和include包含问题详解
2012/09/08 PHP
PHP flock 文件锁详细介绍
2012/12/29 PHP
使用PHP Socket写的POP3类
2013/10/30 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
2012/08/09 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
JS判断iframe是否加载完成的方法
2016/08/03 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
使用AngularJS2中的指令实现按钮的切换效果
2017/03/27 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
Python制作简单的网页爬虫
2015/11/22 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
3分钟学会一个Python小技巧
2018/11/23 Python
详解python和matlab的优势与区别
2019/06/28 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
Linux机考试题
2015/10/16 面试题
市场营销专科应届生求职信
2013/11/24 职场文书
社区服务标语
2014/07/01 职场文书
结婚老公保证书
2015/02/26 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书
golang定时器
2022/04/14 Golang
详解Golang如何实现支持随机删除元素的堆
2022/09/23 Python