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


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第二章
Sep 30 Javascript
JavaScript 拖拉缩放效果
Dec 10 Javascript
VBS通过WMI监视注册表变动的代码
Oct 27 Javascript
JavaScript高级程序设计 阅读笔记(二十) js错误处理
Aug 14 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
Feb 14 Javascript
浅析JavaScript中浏览器的兼容问题
Apr 19 Javascript
使用BootStrap进行轮播图的制作
Jan 06 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
May 18 Javascript
Vue.js中数据绑定的语法教程
Jun 02 Javascript
JS手机端touch事件计算滑动距离的方法示例
Oct 26 Javascript
JS canvas绘制五子棋的棋盘
May 28 Javascript
解析原生JS getComputedStyle
May 25 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生成加减算法方式的验证码实例
2018/03/12 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
Javascript实现的分页函数
2007/02/07 Javascript
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
简单的分页代码js实现
2016/05/17 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
JavaScript闭包的简单应用
2017/09/01 Javascript
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
Vue 实现拨打电话操作
2020/11/16 Javascript
javascript实现放大镜功能
2020/12/09 Javascript
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
Python re模块介绍
2014/11/30 Python
python控制台中实现进度条功能
2015/11/10 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
python argparser的具体使用
2019/11/10 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
2020/02/28 Python
Python Django路径配置实现过程解析
2020/11/05 Python
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
《乡愁》教学反思
2014/02/18 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
节能环保标语
2014/06/12 职场文书
放假通知怎么写
2015/08/18 职场文书
mysql部分操作
2021/04/05 MySQL
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android