前端的数据存储方式,你除了用过 cookie、localStorage 和 sessionStorage 外,还有用过其它的存储方式么?接下来小编带你一起过一下,目前比较流行的一些开源的前端存储方案。
AlaSQL
AlaSQL 是一个用于 JavaScript 的开源的 SQL 数据库,能够处理传统关系表和嵌套的 JSON 数据 (NoSQL)。此外它聚焦于关系数据的查询速度和数据源的灵活性,能在浏览器、Node.js 和 Cordova 的环境中使用。
该库的设计目的是:
- 支持对重的客户端 BI 和 ERP 应用程序,内存中 SQL 数据进行快速处理。
- 简单的 ETL (Extract-Transform-Load) 即数据仓库技术,支持对多种数据格式的数据执行导入、操作、导出。
- 支持所有主流的浏览器、Node.js 应用和移动端应用程序。
目前 Github 统计信息:
Dexie.js
Dexie.js 是 IndexedDB 的包装库,它提供了一套经过精心设计的 API,强大的错误处理,较强的可扩展性,此外它能够跟踪数据变化,支持 KeyRange (搜索不区分大小写,可设置匹方式和 OR 操作)。
Dexie.js 主要为了解决原生 IndexedDB API 中存在的三个主要问题:
- 异常错误处理。
- 较弱的查询功能。
- 代码复杂性。
目前 Github 统计信息:
LokiJS
LokiJS 是一个使用 JavaScript 实现,面向文档的数据库。其目的是将 JavaScript 对象以 NoSQL 方式存储为文档,并提供类似的数据检索机制。它可以运行在 Cordova/PhoneGap、node-webkit、nativescript 和浏览器的环境中。
LokiJS 适用于以下场景:
- 客户端内存数据库,如会话信息存储。
- 注重性能的 Cordova/PhoneGap 应用程序。
- node-webkit 桌面应用。
- nativescript 移动应用。
目前 Github 统计信息:
NeDB
NeDB 是一个 JavaScript 数据库,能够运行在 Node.js、nw.js、Electron 和浏览器环境。它是使用纯的 JavaScript 实现,不依赖其它库,提供的 API 是 MongoDB API 的子集,重要的是它的速度非常快:
- 插入:10,680 ops/s。
- 查找:43,290 ops/s。
- 更新:8,000 ops/s。
- 删除:11,750 ops/s。
ops (operation per second) 即表示每秒操作的次数。
目前 Github 统计信息:
PouchDB
PouchDB 是受 Apache CouchDB 启发为 Web 设计的一款占用空间少的数据库。PouchDB 项目的目标是帮助开发者构建线上和线下都能很好地使用的 Web 应用程序,在应用程序离线的时候,可以将用户数据保存在本地,当恢复在线状态时,通过 CouchDB 和其它相兼容的服务器来同步这些数据。
PouchDB 的主要特点:
- 轻量级,开启 gzipped 后,仅 46KB。
- 跨浏览器,支持 Firefox, Chrome, Opera, Safari, IE。
- 支持 Node.js 和 Cordova
目前 Github 统计信息:
localForage
localForage 是一个快速简单的 JavaScript 存储库。 它通过使用类似于 localStorage 的简单 API 来使用异步存储 (IndexedDB 或 WebSQL) ,进而改善您的 Web 应用程序的离线体验。
对于不支持 IndexedDB 或 WebSQL 的浏览器,localForage 会使用 localStorage 进行数据存储。
localForage 主要支持的平台:
- IE 10 (IE 8+ 使用 localStorage)
- Opera 15 (Opera 10.5+ 使用 localStorage)
- Safari 3.1 (包括 Mobile Safari)
- Chrome 23、Chrome for Android 32
- Phonegap/Apache Cordova 1.2.0
目前 Github 统计信息:
篇幅有限仅介绍了部分方案,此外还有 lowdb (Local JSON Database)、Lovefield (Relational Database) 和 RxDB (Reactive Database) 等,如果你有更好的存储方案,欢迎给小编留言。