2012-08-05 80 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發送給您的朋友,以便直接跳轉到您的應用程序的特定狀態,並且還可以重用它,將它存儲在任何地方。

相關問題