天天看点

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

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

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

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

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

或者:

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

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

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

初始化:

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

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

API:

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

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

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

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

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

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

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

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