当前位置: 首页 > 工具软件 > NW.js > 使用案例 >

nw.js node-webkit系列(21)在应用中如何数据持久化

师谦
2023-12-01

在本地应用中数据持久化是很常见的,人们常使用嵌入外部数据库或写入txt文本的方式来保存数据。然而,在node-webkit有更好的选择,你可以独立使用Web SQL Database, embedded databases, Web Storage 或者 Application Cache 而没有任何额外的依赖。

另外,nw.js提供了App.dataPath的方法可以准确获取到应用存储在本地的数据位置。

Web SQL Database

Web SQL Database的API并不是HTM5规范的一部分而是自己拥有独立规范,它提供了一套使用SQL操作客户端数据库的方法。在介绍API之前,我们假设你基本熟悉SQL语句和用法。

Web SQL Database的API在node-webkit中继承于sqlite,在使用上基本一致:

openDatabase:该方法用于打开数据库对象。

transaction:该方法赋予我们执行相关数据库语句或者回滚的能力。

executeSql:该方法用于执行数据库语句。

如需要打开一个数据库,你可以使用一下代码:

var db = openDatabase('mydb', '1.0', 'my first database', 2 * 1024 * 1024);

方法中包含了4个参数,分别是数据库名称、版本号、数据库描述和数据库预估大小。如果你想打开一个并不存在的数据库,该方法将会自动创建一个新的数据库,同时在你使用完成后并不需要关闭数据库。

创建一个表,插入数据和查询数据,你可以使用transaction和executeSql:

// Create table and insert one line
db.transaction(function (tx) {
  tx.executeSql('CREATE TABLE IF NOT EXISTS foo (id unique, text)');
  tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "synergies")');
  tx.executeSql('INSERT INTO foo (id, text) VALUES (2, "luyao")');
});

// Query out the data
db.transaction(function (tx) {
  tx.executeSql('SELECT * FROM foo', [], function (tx, results) {
    var len = results.rows.length, i;
    for (i = 0; i < len; i++) {
      alert(results.rows.item(i).text);
    }
  });
});

如果你想了解更多Web SQL Database的信息,你可以参考:

http://html5doctor.com/introducing-web-sql-databases/

另外如果你需要了解更多其他的DB存储,如IndexedDB、PouchDB、EJDB、NeDB、LinvoDB、MarsDB、StoreDB和LowDB,你可以参考:

https://github.com/nwjs/nw.js/wiki/Save-persistent-data-in-app

Web Storage

Web storage是一种简单地使用键值的存储方式,你可以像js对象一样直接使用它,但是所有的数据都将会保存再你的硬盘里。

Web storage有两种存储类型,分别是:

localStorage :没有任何期限地存储数据。

sessionStorage :只在本次应用中存储数据,当应用关闭后所有数据自动销毁。

它们的使用方法很简单,只需直接调用localStorage 对象或者sessionStorage 对象即可,如下:

localStorage.love = "luyao";

// Love lasts forever
console.log(localStorage.love);
sessionStorage.life = "";

// But life will have an end
console.log(sessionStorage.life);
如需移除一个键值项,可以使用
localStorage.removeItem("love");
值得提醒的是,想要使用Web storage来存储大数据并不切合实际,因为API调用时同步的,而且并没有索引查询,如果在大量数据中执行相关操作将会变得非常的慢。

Application Cache

HTML5支持应用缓存,这意味着可以在没有任何额外连接的情况下进行数据存储。使用Application Cache主要有以下3个优势:

离线浏览:用户可以在断网的情况下继续浏览数据。

速度:使用Application Cache存储速度将会更快。

减少服务器负载:从服务器上下载过的资源可以重复使用。

然后,Application Cache的设计是主要用于浏览器用户,针对node-webkit用户最好还是使用上面介绍的两种存储方式,如果你想要更多地了解Application Cache,可以参考:http://www.w3schools.com/html/html5_app_cache.asp

 类似资料: