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


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 相关文章推荐
8个超实用的jQuery功能代码分享
Jan 08 Javascript
jQuery中insertBefore()方法用法实例
Jan 08 Javascript
老生常谈onBlur事件与onfocus事件(js)
Jul 09 Javascript
Highcharts学习之坐标轴
Aug 02 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
Sep 17 Javascript
RequireJS 依赖关系的实例(推荐)
Jan 21 Javascript
js canvas实现放大镜查看图片功能
Jun 08 Javascript
Angular实现双向折叠列表组件的示例代码
Nov 21 Javascript
使用Vuex实现一个笔记应用的方法
Mar 13 Javascript
6行代码实现微信小程序页面返回顶部效果
Dec 28 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
Apr 10 Javascript
深入了解js原型模式
May 30 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 字符串压缩方法比较示例
2014/01/23 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
PHP实现的一致性哈希算法完整实例
2015/11/14 PHP
php读取XML的常见方法实例总结
2017/04/25 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
Python 爬虫图片简单实现
2017/06/01 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
sklearn的predict_proba使用说明
2020/06/28 Python
如何一键升级Python所有包
2020/11/05 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
捷克玩具商店:Bambule
2019/02/23 全球购物
销售文员的岗位职责
2013/11/20 职场文书
大学活动策划书范文
2014/01/10 职场文书
市场安全管理制度
2014/01/26 职场文书
活动总结的格式
2014/05/07 职场文书
大型演出策划方案
2014/05/28 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
出售房屋协议书范本
2014/10/06 职场文书
Redis数据结构之链表与字典的使用
2021/05/11 Redis
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
vue中this.$http.post()跨域和请求参数丢失的解决
2022/04/08 Vue.js