persistencejs:异步javascript数据库映射库

persistence.js 是一个异步的 JavaScript 对象数据库映射(ORM)框架。拥有数据库无关的独立抽象层,可轻松支持新的数据库。该软件最开始是为浏览器设计的,利用 HTML5 的 WebSQL 数据库。而后 persistence.js 被扩展以便支持各种 JavaScript 环境,包括服务器端的 JavaScript 环境,如 node.js 。

支持的浏览器

  •  Modern webkit browsers (Google Chrome and Safari)
  • Firefox (through Google Gears)
  • Opera
  • Android browser (tested on 1.6 and 2.x)
  • iPhone browser (iPhone OS 3+)
  • Palm WebOS (tested on 1.4.0)
  • Other browsers supporting localStorage (e.g. Firefox)

使用

 引入 persistence.js

 <script type="text/javascript" src="js/persistence.js"></script> 
 <script type="text/javascript" src="js/persistence.store.sql.js"></script> 
 <script type="text/javascript" src="js/persistence.store.websql.js"></script> 
 <script type="text/javascript" src="js/persistence.store.memory.js"></script>

  

persistence.js 将其核心模块分割成各个较小的 JavaScript 文件,有效的保证了高性能的加载,用户仅需要在用到某个功能模块时才引入相应的 JavaScript 文件。这里我们用到了 persistence.js,persistence.store.sql.js 和 persistence.store.websql.js,这三个文件是使用 Web SQL 必需的。如果用户想以在内存中临时保存数据的方式作为浏览器不支持 Web SQL API 时的替代,那么也可以将 persistence.store.memory.js 引入进来。

配置

在编写 ORM 的 JavaScript 代码前,我们需要告知 persistence.js 我们将会创建什么数据库或者连接向哪个已有的数据库。如清单 7 所示。而这段代码正对应了在清单 1 中描述的连接一个数据库的代码。由此可见 persistence.js 简化了大量的 JavaScript 代码。

 配置 persistence 全局变量
 
 if (window.openDatabase) { 
 persistence.store.websql.config(persistence, 'testdb', 
        'My SQLite database', 5 * 1024 * 1024); 
 } else { 
 persistence.store.memory.config(persistence); 
 }

  

persistence 是引入 persistence.js 后的一个全局变量。当前浏览器如果有 openDatabase API 存在,那么表示是支持 Web SQL 的,我们可以直接指定即将创建的数据库信息,如果没有,那么将使用另一种方式做存储。

创建表

数据库创建好后,我们接着就来看看如何用面向对象的方式创建一个表,清单 8 完成的功能将会如清单 2 所示的 SQL 语句。

persistence.js 创建对象
 var User = persistence.define('User', { 
 name: "TEXT", 
 age: "INTEGER"
 }); 
 persistence.schemaSync();

  

非常简洁的定义了一个 User 对象,再通过 schemaSync() 方法,数据库中对应的一个表就创建完成了。以后用户如果想对 User 表的数据做一些操作,直接从 User 对象调用相关的 API 就可以。

persistence.js 对基本的 SQLite 数据类型,如 NULL,INTEGER,REAL,TEXT,BLOB,是完全支持的,而且还有一些扩展类型也可以支持,如 INT,BOOL,DATE,JSON。

插入和删除数据

对 User 表插入一条记录就是直接将一个 User 对象保存起来,并调用 flush() 方法在持久化,如清单 9。

persistence.js 插入数据
 
 var mark = new User({name: "Mark", age: 60}); 
 persistence.add(mark); 
 persistence.flush();

  

删除一条记录就是直接将一个 User 对象删除,如清单 10。

persistence.js 删除数据
 persistence.remove(mark); 
 persistence.flush();

  github主页:https://github.com/zefhemel/persistencejs,官网http://persistencejs.org

 
posted @ 2016-11-24 13:51  ァ颏餶こ铭訫の  阅读(1185)  评论(0编辑  收藏  举报