JnB*_*ymn 46 database html5 plugins web-applications
我正在创建一个我认为必须有客户端数据库的网站.另一种选择是将所有内容都粘在服务器上,但代价是增加了复杂性并降低了可扩展性.我有什么选择?我必须构建一个插件吗?我必须等到每个人都符合HTML5标准吗?
更新有很多关于为什么我真的需要这个的评论.这是我的想法.告诉我,如果我是愚蠢的:
我回答这个问题的时间已经晚了5年左右,但考虑到现有的一些答案中存在错误和过时的数据,以及原始问题中未解决的问题,我认为我会投入两分钱.
首先,与其他人在此处暗示的相反,localStorage不是数据库.它(或应该被视为)一个持久的,基于字符串的键值存储...
...这可能完全符合您的需求(并将我带到第二点).
如果您对上述所有问题的回答都是"否",那么请使用localStorage,避免出现WebSQL和IndexedDB API的麻烦.好吧,也许只是后者的头痛,因为前者已被弃用.
您可能还需要查看其他几个客户端存储工具(本机和非本机),其中一些已弃用*但仍看到某些浏览器的支持:
如果您想利用这些设施中的任何一个,请查看BakedGoods,而无需编写低级存储操作代码.有了它,例如,将数据放在其中一个(或多个)中就像这样简单:
bakedGoods.set({
data: [{key: "key1", value: "val1"}, {key: "key2", value: "val2"}],
storageTypes: ["silverlight", "fileSystem", "localStorage"],
options: optionsObj,
complete: function(byStorageTypeStoredKeysObj, byStorageTypeErrorObj){}
});
Run Code Online (Sandbox Code Playgroud)
哦,为了完全透明,BakedGoods由这个人维持在这里:).
如果您正在客户端上寻找 NoSQL 风格的数据库,您可以查看http://www.forerunnerdb.com。如果您希望 DOM 自动反映对数据的更改,它支持与 MongoDB 相同的查询语言并具有数据绑定模块。
它也是开源的,不断更新新功能,并且围绕它的社区正在迅速发展。
免责声明,我是该项目的首席开发人员。
如果您觉得需要它,则可以将其用于支持它的客户端,并为不支持它的客户端实现服务器端回退。
一种替代方法是,您可以使用Flash和本地共享对象,它们可以存储比cookie更多的信息,并且可以在所有带有Flash的浏览器(几乎所有浏览器)中运行,并存储类型化数据。您不必在Flash中完成整个应用程序,只需编写一个微型实用程序即可读取/写入LSO数据。可以使用不带任何框架的直接ActionScript项目来完成,这将为您提供5-15kb的瑞士法郎。
您主要需要两个API。 SharedObject.getLocal()获取对LSO的访问权并读取/写入其数据,ExternalInterface.addCallback您可以使用该方法将AS3方法注册为回调来调用您的读取/写入LSO方法。
共享对象
外部接口
这些链接指向Flex引用,但是为此,您只需创建一个ActionScript项目即可,而无需Flex框架,因此可以大大减小swf的大小。有很多不错的IDE,包括免费的FlashDevelop等开源代码。
Flash开发