文章首发于:clawhub.club


因为涉及到结构数据的存储,最开始想的是用SQLite3,但是折腾半天,好难集成,所以找了找electron-vue架子的issues:https://github.com/SimulatedGREG/electron-vue/issues?utf8=%E2%9C%93&q=sqlite,
上面推荐了几个方案:

1,HTML5 Web SQL 数据库

Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs。
三个核心方法:

  • openDatabase:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象。
  • transaction:这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚。
  • executeSql:这个方法用于执行实际的 SQL 查询。

看样例,感觉就是关系型数据库,不知道用起来怎么样。

2,浏览器数据库 IndexedDB

IndexedDB 就是浏览器提供的本地数据库,它可以被网页脚本创建和操作。IndexedDB 允许储存大量数据,提供查找接口,还能建立索引。这些都是 LocalStorage 所不具备的。就数据库类型而言,IndexedDB 不属于关系型数据库(不支持 SQL 查询语句),更接近 NoSQL 数据库。

3,LOCALFORAGE 改进的离线存储

localForage 是一个 JavaScript 库,通过简单类似 localStorage API 的异步存储来改进你的 Web 应用程序的离线体验。它能存储多种类型的数据,而不仅仅是字符串。
localForage 有一个优雅降级策略,若浏览器不支持 IndexedDB 或 WebSQL,则使用 localStorage。在所有主流浏览器中都可用:Chrome,Firefox,IE 和 Safari(包括 Safari Mobile)。

总结:
看起来方案localforage比IndexedDB更优秀一些,虽然同为NoSQL数据库。WebSQL更接近于关系型数据库,本项目目前的数据存储为关系型,所以可能更倾向于websql,但是最终还得看使用起来怎么样,因为数据量实在是小的可怜。
参考:
html5-web-sql
浏览器数据库 IndexedDB 入门教程
localforage中文文档