如何在仅使用HTML和JavaScript的情况下实现持久且可共享的存储方式?

9
编辑: 让我用一个使用案例来澄清一下。我希望能在一个html/javascript页面上运行一个简单的聊天框,而不需要运行我的服务器。我可以写出聊天应用程序的javascript代码,但是没有解决方案可以让我存储数据,以使聊天消息对所有浏览用户可见。因此,我的应用程序将接受数据,将其发布到第三方数据存储(最好只是json格式),并定期从数据存储中轮询更新。这不是我将使用这样的json存储服务/json存储引擎的唯一事情,但它是最清晰的例子。

随着html5的出现,我正在逐渐远离服务器端编程,并探索仅使用html和javascript实现以前需要使用html/php/sql服务器堆栈才能实现的功能的程度。例如,在这个新兴的html5网站上:http://tersh.royronalds.com/,我正在重复使用flickr进行图像托管和tumblr进行博客文章托管。然而,正如一个例子,我现在发现自己想要编写一个动态的待办事项列表,其中项目可以添加并标记为已完成,并在此期间公开显示。另一个例子可能是一个简单的持久聊天框。

例如,我希望使用某种存储方法和公共js API来解决这个问题,比如一些用于存储json的方法,或任何支持字符串和数字的最终格式,并且可以被存储和检索,类似于localStorage,但是是持久和可共享的。
那么有哪些公共技术/解决方案可以实现这样的功能呢?


基本上,您只需要使用JavaScript读写数据库即可吗? - Phillip Schmidt
1
也许可以尝试使用Google Drive SDK(https://developers.google.com/drive/v2/reference/)?我猜无论您选择什么公共通用工具,都会比使用几行代码包装数据库轻松简单地搭建一个简单且廉价的共享托管环境要复杂得多。在现代网站中,后端变成了不过是JSON泵而已,但它们确实存在…… - Hersheezy
是的,网站上只有js。显然,存储引擎可以是第三方服务器上所需的任何东西,但我认为它不必太复杂。我会查看谷歌驱动器的内容,看看它是否符合我的要求。 虽然我希望与其他人的API一起工作会更加复杂,但这意味着我不必在每个站点实例上运行php / apache / mysql甚至node.js / mongodb服务器,而且站点所针对的个人可以在任何托管静态html文件的地方托管页面,同时仍具有强大的功能。 - Kzqai
1个回答

1

虽然选项不多,但它们并不是很好或者发展得很好。

首先,与服务器端数据库最相关的是Web SQL Database。这不是W3C推荐的功能(它不使用SQLite作为后端),但目前在Chrome、Opera、Safari和Firefox(通过插件)中支持。

规范

其次,我们有Indexed Database API。这些仅由Chrome和Firefox支持。(IE 10也支持,但谁在乎呢?)它与普通数据库更不同,但是这是W3C推荐的方法。

规范

第三,我们有本地存储。这不是类似数据库的系统,而是更类似于cookie。但是,这些本地存储项比cookie更好,因为它们每个都是一个键值对(非常直观易用)。例如:

// Store value on the browser permanently
localStorage.setItem('key', 'value');
// Retrieve value
localStorage.getItem('key');
//Remove value
localStorage.removeItem('key');
//This is just a small selection of actions you can perform

规格
有用资源

第四,您可能应该快速查看离线HTML。这是一个系统,其中您网站中的选择文件会被浏览器下载,并可在离线时使用。我认为这对您没有用,但还是要检查一下。

规格
有用指南

正如您所看到的,我在后两个方面比在第一个方面更有经验。无论如何,我希望我的回答能够帮到您。


是的,我熟悉仅自存储,并且提醒可用选项很好,我特别喜欢localStorage,非常适合保存设置,但当然不能共享。一个很好的用例是编写一个非常简单的聊天框,对所有用户可见,而不运行完整的服务器堆栈来保存几行聊天记录,这是我试图解决的问题类型的一个例子。 - Kzqai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接