项目中用到储存点击记录的功能。

Lawnchair是一个轻量级的移动应用程序数据持久化存储方案,同时也是客户端JSON文档存储方法,优点是短小,语法简洁,扩展性比较好。 现在做HTML5移动应用除了LocalStorage的兼容性比较好之外,SQL web database以及IndexedDB都处在僵局中,虽然有人叫嚣着“我们应该干掉 LocalStorage API”,但那是后话,现在也没得选择。 Lawnchair有个曾经的官网:http://westcoastlogic.com/lawnchair/,不过这个站点提供的源码版本过时了,而且还有错误。 需要下载的话,最新版本在https://github.com/brianleroux/lawnchair

###其API汇总 keys (callback) //返回存储对象的所有keys

save (obj, callback)//保存一个对象

batch(array, callback)//保存一组对象

get (key|array, callback)//获取一个或者一组对象,然后调用callback处理

exists (key, callback)//检查是否存在key,并将结果的布尔值(true/false)传递给callback函数

each(callback)//遍历集合,将(对象,对象索引)传递给callback函数

all (callback)//将所有对象放在一个数组返回

remove (key|array, callback)//移除一个或者一组元素。

nuke (callback)//销毁所有

###初始化方法 参数中必须有一个函数作为回调函数,哪怕是空。

var store = new Lawnchair({name:'test'}, function() {});
或者
var store = new Lawnchair(function() {});
复制代码

###option默认为空对象,有三个可选属性

option = {name://相当于表名record://adapter://存储类型
}
复制代码

###save (obj, callback)//保存一个对象

保存形式为对象,如果传入的对象有key属性,那么key会作为索引值保存,如果没有key属性,则自动生成一个key值,然后保存在table._index_中

var store = Lawnchair({name:'tableName'}, function(store) {});
store.save({key:'hust',name:'xesam_1'})
store.save({key:'whu',name:'xesam_2'})
复制代码

###batch(array, callback)//保存一组对象 效果同上

var store = Lawnchair({name:'table'}, function(store) {});
store.batch([{key:'hust',name:'xesam_1'},{key:'whu',name:'xesam_2'}])
复制代码

###exists (key, callback)//检查是否存在key,并将结果的布尔值(true/false)传递给callback函数

store.exists('whu',function(result){console.log(result);//true
})
store.exists('test',function(result){console.log(result);//false
})复制代码

###get (key|array, callback)//获取一个或者一组对象,然后调用callback处理

store.get('hust',function(result){console.log(result);//{key:'hust',name:'xesam_1'}})
复制代码

###all (callback)//将所有对象放在一个数组返回

store.all(function(result){console.log(result);//[{key:'hust',name:'xesam_1'},{key:'whu',name:'xesam_2'}]})
复制代码

###each(callback)//遍历集合,将(对象,对象索引)传递给callback函数

store.each(function(result){console.log(result);//{key:'hust',name:'xesam_1'}// {key:'whu',name:'xesam_2'}})
复制代码

###remove (key|array, callback)//移除一个或者一组元素。

store.remove('whu',function(){store.all(function(result){console.log(result)//[{key:'hust',name:'xesam_1'}]});})
复制代码

###nuke (callback)//销毁所有

store.nuke(function(){store.all(function(result){console.log(result)//[]});})
复制代码

###keys (callback) //返回存储对象的所有keys

store.keys(function(result){console.log(result)//['hust','whu']})
复制代码

##笔者项目为例 新建一个浏览记录的管理者的js文件 代码实现

var haveReadResumeTableName = 'haveReadResumeTableName'function getHaveReadResumeTableManager() {return new Lawnchair({name: haveReadResumeTableName}, function(store) {});
}//清除30天前的查看记录
function cleanBeforeThirtyDaysResumes() {var claerReadResumeHistoryDay = localStorage.claerReadResumeHistoryDay;if(claerReadResumeHistoryDay){try{if(getCurrentDate() == claerReadResumeHistoryDay){return;}}catch(e){//TODO handle the exception}}localStorage.claerReadResumeHistoryDay = getCurrentDate();var manager = getHaveReadResumeTableManager();var beforeThirtyDays = getAfterDay(-30);manager.each(function(resume,keyo) {if(resume.SAVETIME < beforeThirtyDays) {manager.remove(resume.RESUMEID, function() {});}});
}复制代码

查看简历的时候储存简历信息,SAVETIME 对应的是储存的日期。该记录只会保留30天。

        //保存简历到本地function saveThisResumeToLoactionWithResumeAndTime(resumeId, nowTime) {var store = getHaveReadResumeTableManager();// 需要保存的对象var resume = {key: resumeId,RESUMEID: resumeId,SAVETIME: nowTime};// 保存store.save(resume);}
复制代码

批量搜索简历 得到数据后判断简历是否在查看记录里面,已查看会做相应的标示。

               var resumeManager = getHaveReadResumeTableManager();for(var i = 0, len = list.length; i < len; i++) {var resume = list[i];var li = document.createElement('li');//判断是否查看过此简历var haveReadret = false;resumeManager.exists(resume.RESUMEID, function(haveRead) {haveReadret = haveRead;});
复制代码

清除30的记录 适当时候调用。

转载于:https://juejin.im/post/5a31d57a51882535c56cec4d

js 使用 Lawnchair 存储 json 对象到本地相关推荐

  1. js字符串转与json对象类型转换

    js字符串转与json对象类型转换 js字符串转化成json对象,使用JSON.parse()需要注意的地方 1.使用方法 JSON.parse(text[, reviver]) 参数说明: text ...

  2. [js] localStorage 如何存储JSON数据并读取JSON数据

    localStorage是HTML5提供的再客户端实现本地存储的一种方法,但是localStorage方法只能存储字符串数据,有时候我们需要存储对象到本地比如:JSON:那么,localStorage ...

  3. js合并两个json对象

    js把两个对象合并成一个对象 文章目录 js把两个对象合并成一个对象 前言 一.使用Object.assign()解决该问题 1.方法介绍 2.语法 二.示例 1.复制对象 2.合并对象 3.合并具有 ...

  4. js中如何把 json对象转换成 数组

    // var data2 = JSON.parse(data); // JSON.parse() 把 json字符串 转化成 json 对象 // var a = JSON.stringify(dat ...

  5. js实现字符串转json对象的四种方法

    1. javascript函数eval() 语法: var obj = eval ("(" + txt + ")"); //必须把文本包围在括号中,这样才能避免 ...

  6. js中组装拼接json对象,通过java后端接收并解析

    核心点说明: 一.首先将js对象转为json,然后将json通过base64加密(防止后台接收乱码,特殊符号等各种奇葩问题) json = JSON.stringify(list); console. ...

  7. JS ajax 返回的json对象 新增属性值(干货)

    $.ajax({ type:"GEt'; url:"你的地址", data:{"你的字段","字段值"} success:funt ...

  8. js比较两个JSON对象,返回变化值

    废话不多说,直接上干货. let utils = {/*** 比较两个json(新json与老json)的不同,并返回 不同时的旧值(old_val)和新值(new_val)* @param {*} ...

  9. 在js中循环遍历json对象

    一.遍历普通的jsonArray <script>var data=[{"name":"a","age":12},{" ...

最新文章

  1. RuntimeError: output with shape [1, 28, 28] doesnt match the broadcast shape [3, 28, 28]
  2. 服务信息块协议 SMB(Server Message Block protocol)
  3. ELK菜鸟手记 (三) - X-Pack权限控制之给Kibana加上登录控制以及index_not_found_exception问题解决
  4. flink source 同步_大数据面试题-Flink
  5. Java 堆和栈的区别,还傻傻分不清?
  6. 博弈论:寻找先手必胜策略——Grundy值
  7. mac 开启android 模拟器,折腾mac的经验积累 2:mac上如何玩安卓模拟器
  8. PC常见故障及解决思路汇总(系统方面)
  9. Android控件——HorizontalScrollView使用(一)
  10. 【网页制作课作业】用HTML+CSS制作一个简单的学校网页(9页)
  11. UE4 全局变量的应用(蓝图)
  12. RN实现手机摇一摇功能
  13. ElasticSearch快速入门
  14. SAP ERP FI(Financial Accounting)财务会计--BW方向--初级--2
  15. 短信通知-阿里大鱼 申请AK 发送Until
  16. el-cascader
  17. mysql与pg的主键索引说明
  18. 讯飞智能录音笔SR502:七夕值得入手的资料备忘好物
  19. 第5 部分 EIGRP
  20. anaconda 上实现Tensorflow MASK R-CNN Demo Windows (CPU版)

热门文章

  1. .net之工作流工程展示及代码分享(二)工作流引擎
  2. 5个在线调试代码的网站
  3. easyui-menu 解决disableItem不能禁用绑定事件的方法
  4. android:HTTP通信 .
  5. OpenCV【零】—————cv::Mat——Mat对象创建方法
  6. 使用Gearman做分布式计算
  7. Squid3反向代理安装与配置
  8. 一些JSON相关的函数
  9. 按下回车键指向下一个位置的一个函数
  10. 在Asp.Net中从sqlserver检索(retrieve)图片