热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:persistencejs:异步javascript数据库映射库

篇首语:本文由编程笔记#小编为大家整理,主要介绍了persistencejs:异步javascript数据库映射库相关的知识,希望对你有一定的参考价值。persisten

篇首语:本文由编程笔记#小编为大家整理,主要介绍了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







  

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。



 


推荐阅读
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 在Eclipse中提升开发效率,推荐使用Google V8插件以增强Node.js的调试体验。安装方法有两种:一是通过Eclipse Marketplace搜索并安装;二是通过“Help”菜单中的“Install New Software”,在名称栏输入“googleV8”。此插件能够显著改善调试过程中的性能和响应速度,提高开发者的生产力。 ... [详细]
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • CSS中的pointer-events属性详解与应用
    在CSS中,`pointer-events`属性是一个非常实用但常被忽视的功能。它主要用于控制元素是否响应鼠标事件。当一个元素覆盖在其他元素之上时,通过设置`pointer-events`属性,可以决定该元素是否能够接收鼠标点击、悬停等交互操作,从而实现更灵活的用户界面设计。例如,将`pointer-events`设置为`none`可以使元素透明地传递鼠标事件,方便实现复杂的叠加效果和交互逻辑。 ... [详细]
  • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 字节码开发笔记:深入解析与应用技巧 ... [详细]
  • 软件测试工程师必备:全面解析Web应用的浏览器兼容性测试方法与工具
    随着市场上浏览器种类的不断增多,特别是在平板和移动设备上的普及,确保网站在各种浏览器中都能正常运行变得尤为重要。本文将深入探讨Web应用的浏览器兼容性测试方法与工具,帮助软件测试工程师全面掌握这一关键技能,以提高应用的用户体验和可靠性。 ... [详细]
  • 【Python爬虫实操】 不创作小说,专精网站内容迁移,超高效!(含源代码)
    本文详细介绍了如何利用Python爬虫技术实现高效网站内容迁移,涵盖前端、后端及Android相关知识点。通过具体实例和源代码,展示了如何精准抓取并迁移网站内容,适合对Python爬虫实战感兴趣的开发者参考。 ... [详细]
  • 在前一篇文章中,我们介绍了如何使用Requests库发送GET请求。本文将深入探讨如何通过Requests库发送POST请求,包括参数格式、请求封装等关键技巧,并通过“历史上的今天”API实例进行详细说明。 ... [详细]
author-avatar
大女人爱上淘包_502
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有