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


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 相关文章推荐
驱动事件的addEvent.js代码
Mar 27 Javascript
Mootools 1.2教程 Tooltips
Sep 15 Javascript
node.js中的fs.lstat方法使用说明
Dec 16 Javascript
简单实现JS对dom操作封装
Dec 02 Javascript
JavaScript设计模式之观察者模式实例详解
Jan 16 Javascript
简单了解JavaScript中常见的反模式
Jun 21 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
Aug 01 Javascript
Vue中的循环及修改差值表达式的方法
Aug 29 Javascript
layui table去掉右侧滑动条的实现方法
Sep 05 Javascript
JS倒计时两种实现方式代码实例
Jul 27 Javascript
jQuery实现朋友圈查看图片
Sep 11 jQuery
小程序实现tab标签页
Nov 16 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
曾在DC漫画界反派角色扮演的演员,谁才是你心目中的小丑之王?
2020/04/09 欧美动漫
用PHP生成自己的LOG文件
2006/10/09 PHP
php读取数据库信息的几种方法
2008/05/24 PHP
php下载文件的代码示例
2012/06/29 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
js 浏览本地文件夹系统示例代码
2013/10/24 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
基于iframe实现类似于ajax的页面无刷新
2014/05/31 Javascript
触屏中的JavaScript事件分析
2015/02/06 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
BootStrap Tooltip插件源码解析
2016/12/27 Javascript
微信小程序 css使用技巧总结
2017/01/09 Javascript
基于Vue的文字跑马灯组件(npm 组件包)
2017/05/24 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
2018/12/12 Javascript
jQuery实现轮播图效果
2019/11/26 jQuery
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
Flask框架中密码的加盐哈希加密和验证功能的用法详解
2016/06/07 Python
python三方库之requests的快速上手
2019/03/04 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
python/Matplotlib绘制复变函数图像教程
2019/11/21 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
python列表切片和嵌套列表取值操作详解
2020/02/27 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
Django中日期时间型字段进行年月日时分秒分组统计
2020/11/27 Python
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
会计实习生自我鉴定
2013/12/12 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书