2014-01-15 41 views
1

這更多是一個設計/體系結構問題。架構 - GWT中的多個頁面是指多個模塊?

我正在考慮一個網絡應用程序,我想使用GWT(我很久以前就使用了它,我回到了它,所以只是假設我是一個新手)。與許多應用程序一樣,它將有許多入口點,顯而易見的是登錄,丟失密碼,註冊等。更多內容將被添加。

爲了保持代碼清晰&乾淨,你會:

  1. 使各入口點一個單獨的項目,或:
  2. 有一個全球性的項目,並嘗試將多個(我不知道這是feasable),或:
  3. 有一個單一的項目,很多服務和管理「用戶入口點」通過歷史/書籤機制...

我對第三個選項誘惑,b ut我承認我還沒有推它到生產,所以...

回答

0

如果模塊不需要互相溝通,我建議去1)。

使用GWT處理小模塊更容易。由於增量編譯尚不可用,因此可以通過將應用程序分解爲模塊來節省大量編譯時間。

代碼拆分是一個有用的功能,但其目的是將應用程序拆分成小塊,這最好在代碼寫入後更安全穩定。如果您從一開始就可以擁有多個模塊,那會更容易。

如果您需要共享通用代碼,請考慮使用與GWT兼容的庫,而不是合併項目。

+0

那麼,沒有什麼是真正的「完全獨立」......當有準獨立模塊(例如登錄,丟失密碼,註冊)時,我喜歡你的解決方案,但只要他們開始分享內容,限制是什麼?我很天真地問這個問題...... – jgp

+0

當在瀏覽器中時,兩個GWT模塊不能輕鬆地相互通信。解決方法是使用JSNI方法,將數據寫入DOM,並從其中讀取其他模塊。不理想不是嗎?模塊可以通過一個通用的服務器端會話或cookie進行通信,但是如果他們需要通過DOM共享數據,請忘記它:-)。請注意將通用視圖/小部件/邏輯放入模塊可以共享的庫中。請注意,您可以在同一個項目中使用多個模塊。 – otonglet

1

我會建議選項3.這似乎不尋常的是不同的入口點如此不同,你不想分享很多的代碼。唯一的問題可能是如果你的主應用程序有巨大的客戶端代碼,並且你不想加載所有的「丟失密碼」等。在這種情況下,你可以使用代碼分割。

我們已經這樣做了,一切都很好。我們對servlet使用spring安全機制,所以必須做一些擺脫requestFactory的操作來使用不同的URL來註冊等,但除此之外它已經非常流暢。

+0

謝謝 - 這是否意味着所有的UI代碼都將被傳輸,而不管需要如何? – jgp

+0

是的,除非你使用http://www.gwtproject.org/doc/latest/DevGuideCodeSplitting.html我從來沒有需要使用它,所以不能自己擔保。 – salk31