2011-12-25 61 views
4

所以我正在Django中開發這個Web應用程序。確切的web框架並不重要,但重點是:我們在代碼,數據和實際的HTML之間有很好的分離。然而,我們越走越多,我們發現我們希望保留在單個網頁上,並使界面通過AJAX請求響應用戶操作。現在我發現自己編寫了所有這些處理函數,它們期望來自AJAX請求的特定輸入,並通過基本上串聯字符串和數據來構造頁面的大部分。突然它又是1999年,我手動創建HTML字符串。這不是嗎?構建基於AJAX輸入的HTML的正確方法

所以我的問題是,什麼是體面模式/框架/ ...創建在瀏覽器端以系統的方式HTML嗎?我知道有一些jQuery的模板插件,但我承諾其中的一個,但我不知道是否沒有一個更基本的方法來解決這個問題,而這些問題不是那麼罕見?

+2

我強烈建議探索某種類型的客戶端模板。 (例如[Handlebars](http://www.handlebarsjs.com/)) – 2011-12-25 22:24:06

+0

通常,讓您的應用程序完全依賴於JavaScript是一個糟糕的設計。您應該讓頁面停用JavaScript,即使只有2-3%的用戶會禁用它。這將使您的頁面可以在更多的平臺上工作,並且可以使其在機器上運行得更快。它也很難在客戶端代碼中發現,報告和重複發生錯誤。您仍然可以在這樣的場景中使用AJAX來增強頁面,添加幻想效果,擺脫頁面加載等使客戶端體驗變得笨重的事情等。 – 2011-12-25 22:36:16

回答

1

什麼我以前做的是讓我的服務器上做加工和代碼生成。保持客戶端的負載。

您可以加載諧音(視圖)並返回它們,JSON編碼或以其他方式。如果您使用json,請將HTML設置爲響應對象中的「內容」或類似內容。

這樣,有沒有重複代碼,因爲你可以使用相同的看法。訣竅就是如何分解它們。

+0

謝謝,這是個不錯的主意。出於某種原因,我以前從未想過這件事。具有可以在服務器端保留邏輯和模板的優點。當然這是以增加要傳輸的ajax數據的大小爲代價的。不知道是否應用壓縮是合理的,或者無論如何在更深層次上採取了這種措施......現在只是爲了保持想法未來而沒有答案... – Nicolas78 2011-12-25 21:30:18

+0

嚴重的是,視圖有多大?幾kb?我不會擔心=) – 2011-12-25 21:37:16

+0

嘿嘿,這是我的思維類型通常,但你陷入了'基本解決問題的模式';) – Nicolas78 2011-12-25 21:39:16

1

不建立HTML字符串,你認爲持有其持有他們的關係數據庫中的數據,然後就騎自行車周圍的人/基於用戶交互AJAX創建這些JavaScript類的內部的JavaScript DOM對象的數組?這就是我如何在一個頁面上使用動態預加載(允許用戶在選擇它時立即獲得全尺寸圖像)來維護近500張照片(分成多組)的照片庫。

1

過這個1999年的感覺也來和定居jQuery tmpl。 它可以讓你保持模型和視圖分離,並有更多時間專注於業務邏輯。您可以通過在文檔主體中的任何位置使用text/x-jquery-tmpl類型的腳本標籤來定義模板,並通過使用其id來對其進行使用。

相關問題