2008-12-12 70 views
9

我正在考慮使用GWT作爲現有 Web應用程序的前端。GWT與傳統應用程序中的多個主機頁面

我不能一氣呵成證明一個完全重寫,以100%的GWT。我很可能會逐漸將部分系統遷移到GWT。但爲了一致性,我想從第一天開始使用GWT TabPanel,MenuBar等作爲全局界面元素。

作爲一個試驗,看看系統的「遺留」部分如何被整合,我做了以下工作。

應用程序的主要頁面模板現在加載一個小「包裝」 GWT模塊在每一頁上。這個GWT模塊在動態生成的主機頁面中查找DIV的選擇。如果找到DIV,則將合適的小部件插入到位,即menuBar,tabPanel。

包含小部件的很多配置也可以作爲JSON結構插入主機頁面。例如,我已經實現了一個以這種方式動態設置TabPanel的適配器。我還添加了一些非常簡單的小部件,可以加載遠程HTML等。

作爲一個原型,這一切似乎完美並加載速度很快。 但是,看起來GWT應用程序確實是設計爲從一個主機頁面運行,而不是數百個動態生成的應用程序。

任何人都可以突出顯示任何問題,上述做法可能會碰到,尤其是在尺寸上GWT模塊增加?我的目標是保持傳統的包裝模塊有意傾斜。其他功能將在單獨的模塊中實現。

怎麼會有其他人GWT集成到他們的前端以漸進的方式?

回答

5

一個GWT設計中使用的方法是完全一樣的,你已經用它。我們在許多應用程序中都這樣做了 - 其中有一個GWT模塊具有多個「部分」,根據給定的id是否存在於頁面上進行加載。所以我沒有看到你會有這樣的問題。即使對於新的Web應用程序,我們也經常使用這種方法,我們只需要在頁面上添加一些「小部件」,而不是在GWT中編寫整個應用程序。

它不會產生巨大的差異,但我建議的一件事是不將GWT JavaScript代碼放入主模板中,而只是放在需要它的頁面上。確實,如果你不運行HTTPs,它基本上是永久緩存的,但如果在該頁面上實際上並不需要,那麼讓人們加載模塊似乎是錯誤的。這當然取決於人們如何使用你的網站,如果他們有可能下載它,那麼它將不會有任何改變。

2

你這樣做是正確的。避免避免避免試圖通過將其分解爲多個單獨的應用程序來「儘量減少」GWT佔用空間的誘惑。

GWT性能的關鍵是儘可能少地下載並確保它們被緩存。一次加載一個250k的bundle比兩個200k的bundle好得多,因爲隨着事物的增長,壓縮對大文件來說會變得更好,你真的開始獲得好處。

y-slow &當談到說服自己這個問題時,螢火蟲確實很有用。你可以看看

一個性能技巧是在這裏的樣章可供選擇:http://www.infoq.com/articles/progwt 這表明圍繞裝載GWT部件的小型建築成任意數量的JavaScript中的變量槽和預填充數據。這允許您的GWT小部件加載並且不需要第二個HTTP GET來獲取它們使用的數據。在實踐中,我發現這是一個很好的性能提升。