0

假设我正在用 JavaScript 编写一个简单的单页 Web 应用程序。该应用程序仅显示员工记录。用户输入搜索参数,应用程序使用 AJAX 从服务器获取员工记录并将其显示在网页中。

应用程序状态为search paramsemployees。如何将它们存储在应用程序中?我看到两个选项:

  • 只需使用 DOM 隐式存储状态。
  • 为 DOM 创建数据结构search params并将employees它们与 DOM 同步。

是否有意义?这两种选择的优缺点是什么?

4

5 回答 5

1
  • 在这种情况下,您可以在用户应用过滤器时触发哈希值的更改。例如: http://www.mydomain.com/index.html#name=abc&department=def。您的应用程序会侦听哈希中的更改以进行相应更新。像crossroads.jssammy.js这样的库允许你这样做。客户端的这种方法借用了服务器端的路由概念。

  • 使用这种方法,您可以将 url 发送给您的朋友以直接“跳转”到应用程序的特定状态,您还可以重复使用它,将其存储在任何地方。

于 2013-04-05T02:37:17.007 回答
1

如果您的目标是现代浏览器,那么 Web Storage 将是您研究的一个不错的选择。

在这里写得很好:http: //sixrevisions.com/html/introduction-web-storage/

这样,所有负载都将保留在客户端中,并且数据将在请求之间以及用户离开并返回应用程序时持续存在。

我猜您提到的选项意味着您将在隐藏的 DOM 元素中存储数据将很容易开发,但是您将失去所有持久性。如果您打算走这条路,为什么不直接将数据存储在 javascript 对象中呢?

另一个好读物:http ://diveintohtml5.info/storage.html

于 2012-08-05T13:58:07.893 回答
1

如果你想让它们持久化,你就不能使用 DOM,你也不应该使用。HTML 用于您的用户界面并将所有内容链接在一起,而不是用于应用程序的数据存储。你有几个选择。您可以在 JavaScript 中使用全局变量,但您必须记住,它们不会在访问您的页面之间持续存在。如果这是您想要的,请继续。

另一种选择是使用 HTML5 的本地存储,它是持久的,专为存储数据而设计。

您的最后一个选项(如果您不想在本地存储数据但确实想持久保存数据,这一点很重要)是使用 HTTP AJAX GET 和 POST 与 servlet 或客户端上分别获取和设置数据的东西.

如果你想走老路,你也可以使用 cookie 代替 Web 存储。我绝对建议后者。

于 2012-08-05T13:59:49.973 回答
1

如果您使用 HTML 5,您可能会考虑使用这种杠杆作用:

http://www.jstorage.info/

于 2012-08-05T14:00:19.383 回答
1

肯定是后者。DOM 从未被设计为数据结构。另一方面,创建一个架构以使 DOM 与您的自定义数据结构保持同步可能会很痛苦。

幸运的是,有一些框架可以帮助您解决这个问题。其中大多数遵循类似 MVC(或 MV*)的设计模式。示例包括Backbone.jsAngularJSSpineAgility.jsJavaScriptMVC等等。周围看看。

还可以查看这个项目:TodoMVC。它可能会帮助您决定是否使用这样的框架,如果是的话,使用哪一个。

于 2012-08-05T14:00:52.260 回答