名谓扫盲,实则扫自己的盲
calendone
,它是一个普通的Electron日历应用,有每日记录,定计划等功能,需要做数据持久化。数据量不大,不需要考虑性能问题。简单看了些方案。
-
Web Storage接口
,即localStorage和sessionStorage
-
Web SQL,这是一个
已经废弃
的规范。就跟它的名字一样,它就是浏览器端的一个SQL数据库,可以执行SQL语句。由于语法和SQLite绑定过紧,后被标准组织废弃
-
indexedDB
,Web SQL的替代品,也是浏览器端的数据库,但他是No SQL的。有MongoDB使用体验的,对它就不会感到陌生。
mdn
的介绍。
更新和删除数据,分别使用
put
和
delete
方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
var request = db.transaction(['person'], 'readwrite') .objectStore('person') .put({ id: 1, name: '李四', age: 35, email: '[email protected]' });
request.onsuccess = function (event) { console.log('数据更新成功'); };
request.onerror = function (event) { console.log('数据更新失败'); }
var request = db.transaction(['person'], 'readwrite') .objectStore('person') .delete(1); request.onsuccess = function (event) { console.log('数据删除成功'); };
|
其中put的数据为全量替换,可以通过get方法拿到数据后,修改特定值再交给put完成增量替换。
-
localForage
,支持类Storage API语法的客户端数据存储polyfill,支持回退到Storage和Web SQL
-
dexie.js
,提供更友好和简单的语法便于快速的编码开发,
有Typescript支持
。
-
ZangoDB
,提供类MongoDB的接口实现,提供了许多MangoDB的特性实现
-
JsStore
,提供基于indexedDB的类SQL的语法实现。
综上,考虑到dexie.js的语法更加友善,文档页较完善。最终选择它作为客户端存储的实现。
-
HTML5本地存储不完全指南
-
IndexedDB API
-
使用 IndexedDB - Web API接口参考 | MDN
-
Dexie.js API Reference