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


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 相关文章推荐
DLL+ ActiveX控件+WEB页面调用例子
Aug 07 Javascript
javascript 用函数语句和表达式定义函数的区别详解
Jan 06 Javascript
js判断当前浏览器类型,判断IE浏览器方法
Jun 02 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
May 03 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
Jul 09 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
Sep 06 Javascript
js简单正则验证汉字英文及下划线的方法
Nov 28 Javascript
JavaScript定时器制作弹窗小广告
Feb 05 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
Aug 18 Javascript
Webpack优化配置缩小文件搜索范围
Dec 25 Javascript
Node解决简单重复问题系列之Excel内容的获取
Jan 02 Javascript
vue实现点击按钮下载文件功能
Oct 11 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
ASP知识讲座四
2006/10/09 PHP
php 利用array_slice函数获取随机数组或前几条数据
2015/09/30 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
ie 调试javascript的工具
2009/04/29 Javascript
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
让图片旋转任意角度及JQuery插件使用介绍
2013/03/20 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
JS模拟并美化的表单控件完整实例
2015/08/19 Javascript
jQuery网页版打砖块小游戏源码分享
2015/08/20 Javascript
Bootstrap3制作自己的导航栏
2016/05/12 Javascript
微信小程序 wx.uploadFile无法上传解决办法
2016/12/14 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
Js自定义多选框效果的实例代码
2017/07/05 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
js传递数组参数到后台controller的方法
2018/03/29 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
2019/05/09 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
js通过canvas生成图片缩略图
2020/10/02 Javascript
Jquery Fade用法详解
2020/11/06 jQuery
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
利用Tensorflow的队列多线程读取数据方式
2020/02/05 Python
Django通过json格式收集主机信息
2020/05/29 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
国庆节活动总结
2014/08/26 职场文书
中职招生先进个人材料
2014/08/31 职场文书
毕业实习单位意见
2015/06/04 职场文书