Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 649|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-8-26 13:49:01 | 显示全部楼层 |阅读模式

    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方法即可。

     

    转载请注明来自小西山子【http://www.cnblogs.com/xesam/
    本文地址:http://www.cnblogs.com/xesam/archive/2012/03/01/2370307.html

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 11:33 , Processed in 0.054903 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表