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


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 相关文章推荐
简单通用的JS滑动门代码
Dec 19 Javascript
js 获取子节点函数 (兼容FF与IE)
Apr 18 Javascript
Javascript 面试题随笔
Mar 31 Javascript
你需要知道的10个最佳javascript开发实践小结
Apr 15 Javascript
jquery.post用法之type设置问题
Feb 24 Javascript
jQuery中removeProp()方法用法实例
Jan 05 Javascript
angularjs学习笔记之完整的项目结构
Sep 26 Javascript
属于你的jQuery提示框(Tip)插件
Jan 20 Javascript
更高效的使用JQuery 这里总结了8个小技巧
Apr 13 Javascript
浅析JavaScript Array和string的转换(推荐)
May 20 Javascript
JavaScript箭头(arrow)函数详解
Jun 04 Javascript
原生js+canvas实现下雪效果
Aug 02 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
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
PHP中soap的用法实例
2014/10/24 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
php中static和const关键字用法分析
2016/12/07 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
2014/06/13 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
js实现点击左右按钮轮播图片效果实例
2015/01/29 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
Websocket协议详解及简单实例代码
2016/12/12 Javascript
Ionic2开发环境搭建教程
2020/08/20 Javascript
基于Bootstrap表单验证功能
2017/11/17 Javascript
微信小程序实现上传图片功能
2018/05/28 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
2018/09/28 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
Python实现根据IP地址和子网掩码算出网段的方法
2015/07/30 Python
pandas对dataFrame中某一个列的数据进行处理的方法
2019/07/08 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
阿迪达斯越南官网:adidas越南
2020/07/19 全球购物
市场营销专业毕业生自荐信
2013/11/02 职场文书
完美的中文自荐信
2014/05/24 职场文书
办公室文员工作自我鉴定
2014/09/19 职场文书
劳模事迹材料范文
2014/12/24 职场文书
妈妈再爱我一次观后感
2015/06/08 职场文书
青年干部培训班学习心得体会
2016/01/06 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书