pouchDB

在浏览器端,目前主要的几种存储方法有:cookiesessionStoragelocalStorage以及webSQLindexDB.

cookie

cookie主要是网站访问过程中保存用户身份信息,大小为4kb.既可以通过document.cookie和http请求中set-cookie来设置。并且在发送http请求中随着head中发送到服务器。

sessionStorgae

是新标准,ie8以及以后才支持。主要用于会话信息存储,当前页面关闭后则清楚(如果是刷新,则不清楚)大小限制为5M,不会传送到服务器。可以触发onStorageChange事件,在本地状态更新时候很有帮助。

localstorage

也是html5新标准,ie8以及以后才支持。除非清除,否则信息永远保存。大小限制为5M。可以触发onStorageChange事件。

websql与indexDB

都是html5新的本地存储api。但是随着发展,websql逐渐废弃,indexDB成为新的流行。特点是单个数据库本地存储大小为400M左右。并且数据库创建数目不限。但是使用比较不方便。于是便介绍一个在操作本地数据库的js开源库pouchDB

pouchDB

pouchdb主要是更友好的操作本地数据库,方便开发离线应用。pouchdb首先选择indexDB, 回滚方案为websql。官网:https://pouchdb.com/可查看浏览器支持情况,虽然国内使用的人不多,单是当前github的star数量为6000多,可见还是很火的!

首先把pouchdb引入页面即可开始使用。

var db = new PouchDB('db'); //新建数据库,若存在,直接打开,当然也可以访问远程数据库,碉堡有没有。

db.put({
    _id : Date.now() + '', //特别注意的是这个id必须为字符串
    data : data
})

当然批量写入推荐使用db.bulkDocs, 此时可以自动创建id。另外一个亮点是支持回调、promiss 和 es6的写法。

db.bulkDocs([
    {
        title    : 'Lisa Says',
        _deleted : true,
        _id      : "doc1",
        _rev     : "1-84abc2a942007bee7cf55007cba56198"
     },
    {
        title    : 'Space Oddity',
        _deleted : true,
        _id      : "doc2",
        _rev     : "1-7b80fc50b6af7a905f368670429a757e"
    }
], function(err, response) {
    if (err) { return console.log(err); }
    // handle result
});

详细去参考api。

Written on May 11, 2016