2012-08-05 52 views
0

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

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

  • 只是使用DOM来隐式存储状态。
  • 创建数据结构search paramsemployees,并与DOM同步他们。

它有道理吗?这两种选择有什么优点和缺点?

回答

1

如果你的目标的现代浏览器,Web存储将是一个不错的选择,让你看看。

好这里写下:http://sixrevisions.com/html/introduction-web-storage/

这样,所有的负载将被保存在客户端和数据内将请求之间,如果用户离开依然存在,回来的应用。

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

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

1

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

另一种选择是使用HTML5的本地存储空间,是持续性,设计用于存储数据。

你最后的选择,如果你不想在本地存储数据,但确实要坚持这是重要的,就是用AJAX HTTP GET和POST,而客户端是获取并设置一个servlet或东西数据,分别。

如果你想要去的老办法,你也可以使用cookie,而不是Web存储。不过我肯定会提示后面的。

http://www.jstorage.info/

1

如果使用HTML 5,您可以考虑使用这种杠杆作用。 DOM从未被设计成数据结构。另一方面,创建一个架构来保持DOM与您的自定义数据结构同步可能会很痛苦。

幸运的是,有框架可以帮助你做到这一点。其中大部分遵循MVC(或MV *) - 类似于设计模式。示例包括Backbone.js,AngularJS,Spine,Agility.js,JavaScriptMVC等等。到处看看吧。

同时查看该项目:TodoMVC。它可以帮助你决定是否使用这样的框架,如果是这样的话,哪一个。

1

绝对是后者:

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

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

相关问题