nw.js node-webkit系列(21)在应用中如何数据持久化
来源:互联网 发布:给软件添加注册码 编辑:程序博客网 时间:2024/05/24 23:14
在本地应用中数据持久化是很常见的,人们常使用嵌入外部数据库或写入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 linedb.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 datadb.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 foreverconsole.log(localStorage.love);
sessionStorage.life = "";// But life will have an endconsole.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
- nw.js node-webkit系列(21)在应用中如何数据持久化
- nw.js node-webkit系列(22).nw执行过程及如何获取.nw真实路径
- nw.js node-webkit系列(14)不同系统环境下如何启动node-webkit APP
- nw.js node-webkit系列(1)简单介绍及应用
- nw.js node-webkit系列(4)Native UI API 概述和应用规范
- nw.js node-webkit系列(17)怎样打包和分发你的应用
- nw.js node-webkit系列(2)nwjs相关教程
- nw.js node-webkit系列(23)如何检查任务管理器运行了哪些进程
- nw.js node-webkit系列(24)如何对本地文件读写
- nw.js node-webkit系列(25)child_process中spawn和exec方法的使用
- nw.js node-webkit系列(19)开发者必看:nw.js快速开发解决方案
- nw.js(node-webkit)桌面客户端
- node webkit(nw.js) 设置自动更新
- nw.js node-webkit系列(15)如何使用内部模块和第三方模块进行开发
- nw.js node-webkit系列(3)基本程序结构与配置
- nw.js node-webkit系列(5)Native UI API Window的使用
- nw.js node-webkit系列(6)Native UI API Frameless window的使用
- nw.js node-webkit系列(7)Native UI API Menu的使用
- C++ Unicode SBCS 函数对照表
- Play framework REST API
- 查看当前用户的一些权限
- RF射频技术-si4438C芯片介绍
- OC语言实现指纹识别
- nw.js node-webkit系列(21)在应用中如何数据持久化
- 线程安全和不可重入
- Golang之继承模拟
- Scala之旅-提前定义
- Chisel的安装
- log4j.properties 详解与配置步骤
- 大二下学期计划
- 翻硬币
- 手工释放Linux内存——/proc/sys/vm/drop_caches