我正在使用 HTML、CSS 和 JavaScript 制作待办事项列表应用程序,我认为存储数据的最佳方式是本地数据库。我知道如何使用 localStorage
和 sessionStorage
,我也知道如何使用在线 MySQL数据库。但是,这个应用程序必须能够离线运行,并且应该离线存储它的数据。
有没有一种方法可以仅使用 HTML 和 JavaScript 来做到这一点?
回复评论:
"You said you know how to use
localStorage
... so what seems to be the problem?"
@Lior 我对 localStorage
的了解是您可以将单个结果存储为变量,而我希望存储包含不同列的行,其中包含关于对象的不同数据。但是,localStorage
可以保存一个对象吗?如果可以,是否可以使用通常的对象表示法来引用它?
Any implementation will probably depend on what browser(s) your users prefer to use.
@paul 我认为 chrome 会最受欢迎。
好吧,我想澄清一下,我问的确实是 How can I do this with JavaScript and HTML 而不是 Is there a way I could do this with just with HTML and JavaScript?。基本上,我想要一种 SQL 数据库,它将其内容保存在用户的机器上而不是在线。
解决我的问题的是使用 WebDB 或 WEBSQL(我认为它被称为类似的东西)。
最佳答案
我迟到了大约 3 年才回答这个问题,但考虑到当时没有关于可用选项的实际讨论,而且 OP 最终选择的数据库 is now deprecated ,我想我会在这件事上投入我的两分钱。
首先,需要考虑是否真的需要客户端数据库。更具体地说……
- 您的数据项之间是否需要显式或隐式关系?
- 查询上述元素的能力如何?
- 或超过5 MB在太空?
如果您对以上所有问题的回答都是“否”,请使用 localStorage 并避免 WebSQL 和 IndexedDB API 的麻烦。好吧,也许只是后者令人头疼,因为如前所述,前者已被弃用。
否则,就原生客户端数据库而言,IndexedDB 是唯一的选择,因为它是唯一保留在 W3C 标准轨道上的选择。
查看 BakedGoods如果您想利用这些设施中的任何一个,甚至更多,而无需编写低级存储操作代码。有了它,将数据放入客户端支持的第一个遇到的 native 数据库中,例如,非常简单:
bakedGoods.set({
data: [{key: "key1", value: "val1"}, {key: "key2", value: "val2"}],
storageTypes: ["indexedDB", "webSQL"],
//Will be polyfilled with defaults for equivalent database structures
optionsObj: {conductDisjointly: false},
complete: function(byStorageTypeStoredKeysObj, byStorageTypeErrorObj){}
});
哦,为了完全透明,BakedGoods 由这里的这个人维护 :)。
关于javascript - 如何制作本地离线数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16815942/