选择 Web 客户端持久化机制
如何选择 Web 客户端持久化机制
昨晚,我接到一个客户的电话,他们想讨论一个有趣的难题 – 如何为离线 Web 应用程序选择 Web 客户端持久化机制? 在 HTML5 及其带来的新规范的各种炒作下,这是一个非常重要的问题。 许多在不久的将来构建离线应用程序的 Web 开发人员可能会发现自己也陷入这种困境。 因此,在这篇文章中,我将总结您拥有的选项,并且我会向您介绍两个新的 JavaScript 库,它们可以帮助您实现持久化机制,而不必担心底层的具体实现。
Web 客户端持久化机制选项
借助 HTML5 规范,现在有新的选项可以在 Web 客户端存储数据,这些选项是对一些旧选项(例如 cookies)的补充。 以下是您面临的新选项:
- 本地存储 (Local Storage) 是一个键/值字典,存储在 Web 浏览器中,即使您关闭浏览器/浏览器选项卡,您的数据也会持久存在。 保存的数据是 Web 浏览器本地的,不会发送到服务器。 它包括两种不同的存储类型 – 本地存储和会话存储。 如果您想阅读有关此机制的更多信息,可以阅读以下文章 – 在 Web 应用程序中使用 Web 存储。
- IndexedDB – 引自 W3C 规范 – “用于存储包含简单值和分层对象的记录数据库的 API。 每个记录由一个键和一个值组成。 此外,数据库还维护对其存储的记录的索引。” 我将在以后的文章中介绍这种机制。
- 您自己的自定义实现,可以基于新的 HTML5 File API 例如。
有了这些新选择,您会选择哪个?
由于 indexedDB
目前正在规范开发中(意味着它非常不稳定),而本地存储是一个稳定的规范,您可能会想使用本地存储,但您可能希望将来使用 indexedDB
。 那么您如何解决这个难题呢?
datajs 和 AmplifyJS
让我们根本不解决它。 您可以使用一个包装器,它默认会转到 indexedDB
,并回退到本地存储或内存实现以用于旧的浏览器。 有两个很棒的全新库实现了这样的包装器,我建议您在打算使用 Web 客户端存储时检查它们:
- datajs – 来自 Microsoft 数据平台的开源 JavaScript 库,被描述为“一种新的跨浏览器 JavaScript 库,它通过利用 JSON 和 OData 等现代协议以及支持 HTML5 的浏览器功能来实现以数据为中心的 Web 应用程序”。 datajs 支持本地存储、indexedDB(目前处于实验性支持)以及旧浏览器的回退内存存储。 如需进一步阅读,请访问 使用 datajs Store API 处理客户端存储。
-
– 来自 .appendto() 的开源 JavaScript 库,被描述为“一组旨在通过简单的 API 解决常见 Web 应用程序问题的组件”。 它包括一个用于各种持久客户端存储系统的包装器,带有
amplify.store
包装器。 如需进一步阅读,请访问 Store AmplifyJS API 文档。
这些库可以使您的生活更轻松,并消除您的大部分疑虑。
摘要
有新的 Web 客户端持久化机制可以帮助您创建离线 Web 应用程序。 我希望这篇文章能帮助您了解您拥有的选项以及一些可能帮助您使用这些选项的库。