HTML5开发——轻量级JSON存储解决方案Lawnchair.js

Lawnchair是一个轻量级的移动应用程序数据持久化存储方案,同时也是客户端JSON文档存储方法,优点是短小,语法简洁,扩展性比较好。

现在做HTML5移动应用除了LocalStorage的兼容性比较好之外,SQL web database以及IndexedDB都处在僵局中,虽然有人叫嚣着“我们应该干掉 LocalStorage API”,但那是后话,现在也没得选择。

Lawnchair有个曾经的官网:http://westcoastlogic.com/lawnchair/,不过这个站点提供的源码版本过时了,而且还有错误。

需要下载的话,最新版本在https://github.com/brianleroux/lawnchair

应用示例【应用的是dom Storage】:

var store = new Lawnchair({name:‘testing‘}, function(store) {    // 需要保存的对象    var me = {key:‘brian‘};    // 保存    store.save(me);

    store.get(‘brian‘, function(me) {        console.log(me);    });});

或者:

var store = Lawnchair({name:‘testing‘}, function(store) {    // 需要保存的对象    var me = {key:‘brian‘};    // 保存    store.save(me);

    store.get(‘brian‘, function(me) {        console.log(me);    });});

因为使用了安全的构造函数,因此两种方法的效果一致。回调函数的第一个参数与返回的的store是同一个对象,在回调函数内部也可以用this代替。

初始化:

var store = new Lawnchair(option,callback);

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

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

callback的第一个参数是当前对象,在回调函数内部也可以用this代替。

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() {});

参数中必须有一个函数作为回调函数,哪怕是空。

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

    var store = Lawnchair({name:‘table‘}, function(store) {    });    store.save({        key:‘hust‘,        name:‘xesam_1‘    })    store.save({        key:‘whu‘,        name:‘xesam_2‘    })

创建Lawnchair对象的时候,如果传入的option参数含有name属性,那么会创建一个类似table._index_的数组用来保存索引值。

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

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

上面的例子改用batch方法就是:

    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‘]    })

lawnchair.js的核心很小,然后有完善的扩展和插件机制,可以按需加载。自己编写也比较方便,只需要在自己的代码中实现adapter valid init keys save batch get exists all remove nuke方法即可。

时间: 2024-10-07 19:14:19

HTML5开发——轻量级JSON存储解决方案Lawnchair.js的相关文章

开源的轻量级JSON存储Kinto介绍

本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/12/introducing-kinto Kinto是个提供了同步与分片功能的轻量级JSON存储服务,并且易于使用. 它在Mozilla内部得到了广泛的应用,基于Apache v2许可. 基本上,Kinto是个服务,client应用能够通过它存储和获取JSON数据.为了对这些数据提供同步与共享特性,Kinto引入了一些基本概念. Bucket:能够将bucket看作是命名空间

【翻译】HTML5开发——轻量级Web Database存储库html5sql.js

方式1: html5sql官方网址:http://html5sql.com/ 阅读之前,先看W3C关于WEB Database的一段话: Beware. This specification is no longer in active maintenance and the Web Applications Working Group does not intend to maintain it further. 意味着WEB Database规范陷入僵局. html5sql官方网址:http

面向Web Cloud的HTML5 App开发实战:Browser&HTML5&CSS3&PhoneGap&jQuery Mobile& WebSocket&Node.js(2天)

如何理解Android架构设计的初心并开发出搭载Android系统并且具备深度定制和软硬整合能力特色产品,是本课程解决的问题. 课程以Android的五大核心:HAL.Binder.Native Service.Android Service(并以AMS和WMS为例).View System为主轴,一次性彻底掌握Android的精髓. 之所以是开发Android产品的必修课,缘起于: 1,     HAL是Android Framework&Application与底层硬件整合的关键技术和必修技

(转)HTML5开发学习(2):本地存储之localStorage 、sessionStorage、globalStorage

原文:http://www.cnblogs.com/xumingxiang/archive/2012/03/25/2416386.html HTML5开发学习(2):本地存储之localStorage .sessionStorage.globalStorage   Posted on 2012-03-25 11:23 祥叔 阅读(2) 评论(0)  编辑 收藏 HTML5 提供了四种在客户端存储数据的新方法,即 localStorage .sessionStorage.globalStorage

iOS开发趋势:Native与H5+JS 解决方案

支付宝红包火了,微信红包火了,作为开发者,敏感的就发现之前并不被看好的H5已经悄悄渗透进来,在原生(Native)代码中部分功能采用动态网页(HTML5+JavaScript)来实现,即保证了整体App的流畅度,又能及时推出一些活动和动态,目前主流App已经开始默认这种开发模式,未来的移动开发团队也需要H5的小伙伴加入进来了,实现动静结合,让页面更加灵活多变,接下来笔者就根据之前涉及到的项目经验来谈谈原生与网页交互的那些不得不说的琐事: 一. 原生代码中直接加载页面 1.    具体案例 加载本

(转)HTML5开发学习(3):本地存储之Web Sql Database

原文:http://www.cnblogs.com/xumingxiang/archive/2012/03/25/2416386.html HTML5开发学习(3):本地存储之Web Sql Database(附源码) Posted on 2012-03-25 14:03 祥叔 阅读(0) 评论(0)  编辑 收藏 接着上一篇,这节介绍Html5 本地存储中的一个很重要的概念--Web Sql Database ,正因为本人觉得这个很重要,所有独立出来重点介绍.即时你完全没听说过这个概念,望文生

有关HTML5开发的资源集合

资源来自:https://github.com/maxzhang/maxzhang.github.com/issues/12 html5并不是一个什么很新鲜的东东了,首先不要有概念上的误区,我想题主说的html5是指一个泛概念,html5是由下面几个技术组成的一个整体: HTML5 ~= HTML + CSS + JS 推荐一个PPT可以让你全面了解HTML5:http://slides.html5rocks.com/ HTML部分包括大家已经熟知的HTML4.01 Standard http:

web前端之html5开发中常用的开发工具

正所谓“工欲善其事,必先利其器”,对Web开发人员来说,好工具的使用总会给人带来事半功倍的效果.正准备学习HTML5或者已经进行了一段时间的HTML5开发的童鞋,都有必要了解下,HTML5都有哪些开发工具,哪款开发工具更适合我?下面就一一盘点下: 一.HTML5全栈开发工具之Adobe Dreamweaver 首先是大名鼎鼎的Adobe Dreamweaver,Adobe Dreamweaver 软件使设计人员和开发人员能充满自信地构建基于标准的网站.由于同新的 Adobe CS Live 在线

linux-mint下搭建android,angularjs,rails,html5开发环境

目录[-] 必备软件: 环境配置: [open-jdk-6.0] [android-sdk] [ant] [github] [node.js] [rvm](ruby-1.9.3 rails-4.0.0 gemfile) 必备概念: 关于自动化部署我推荐大家参谋一下Fortune Zhang的一篇文章:android开发过程中我是怎么一步步让项目自动化起来的 最新更新链接:https://gist.github.com/Channely/8296901 系统以64bit为例进行配置/2013/11