2011-08-19 75 views
1

我想使用Grails創建Web應用程序。Grails視圖渲染。呈現GSP或使用主幹+模板?

主佈局由少部分組成,如頂部,左側,內容等。 我希望每個部分都可以部分刷新。我打算使用jQuery來執行ajax請求和刷新。

讓我們專注於內容佈局。我有兩種選擇來渲染視圖:

  1. 正如我們所知,Grails默認情況下使用Sitemesh作爲其視圖。所以基本上,我將使用jQuery來使用ajax獲取gsp頁面。 並將該頁面放入內容佈局中。
  2. 我將使用jQuery從Grails控制器中獲取JSON對象(而不是GSP),並使用任何jQuery模板插件使用渲染視圖。 我可能需要使用backbone.js/spine.js來管理OO結構。

這兩個選項哪一個更好?

我主要考慮以下參數:易於開發,性能,可維護性等。 但如果您認爲還有其他重要參數需要考慮,請告訴我。我不是一個體驗Web開發人員。

或者你也許知道其他更好的選擇?

謝謝:)

回答

0

首先,有可能的情況下,你不得不使用兩者的組合(同樣的結構)。顯然這種可維護性泄漏應該避免。

可維護性靈活性速度的發展觀,你首先應該考慮的選項。這是Grails所完成的。這樣做有很大的好處:當第一次調用GSP時,可以將模板渲染到GSP中。當一個AJAX動作被調用時,你只需重新渲染這個模板。它簡短,簡單而有效。大多數Grails標籤都可以處理這些操作。此外,它很容易可測試

但是,如果您想根據其他事件(如WebSockets/comet)更新您的內容並且您不希望/不能再次調用服務器,那麼您將失去一點點可重用性。在這種情況下,您應該使用jQuery-Template實現模板邏輯,並使用從服務器推送消息接收的JSON數據填充模板邏輯。

性能:還有一些用例,在其中你應該考慮第二個選項還有:如果你有一個聊天,你只希望逐漸顯示新郵件(或者你需要減少使用帶有服務器的),並且不希望僅僅因爲有一個小的新消息而將完整的聊天進度發送給用戶。在這裏,你不能使用模板沒有一些黑客或限制。此外,如果您想爲用戶提供實時感受,則不能讓他等待服務器的答案,並且需要使用JQuery直接更新視圖,而無法重複使用模板。因此,至少從我的角度來看,您應該將模板數據放在一個地方,並使用jQuery-Template或類似的模板。

+0

謝謝。我想我的要求迫使我使用兩者。沒有選擇 :( – hida