您對模塊有了正確的想法 - 它描述了(在開發方面)要使用的java源路徑,啓動編譯的入口點以及各種屬性(瀏覽器,語言環境)編譯時使用。編譯完成後,模塊也代表輸出 - javascript和任何相關的其他編譯文件,無論是日誌,圖像,樣式表等。
相反,ClientBundle是開發人員可以告訴編譯器的方式之一編譯後將使用java源路徑中的某些資源。 CssResource附帶了使用css樣式名稱的額外檢查(如果不是,應該刪除它們以最大限度地減少編譯輸出),ImageResource確保文件在編譯時存在,並且爲每個瀏覽器都以最佳優化方式輸出這些文件。大多數瀏覽器的圖像實際上都包含在大量的JS文件中,以最大限度地減少對服務器的調用次數,對於那些不支持此功能的用戶,它們會自動精確地顯示在一起。
通過聲明ClientBundle接口並調用GWT.create(MyClientBundle.class)
,您要求編譯器處理ClientBundle的具體細節,以便在您的應用程序中使用這些引用的文件和類。 如何它不具有與GWT發電機,一個更高級的話題比可以在解決SO回答做...
是,ClientBundles 描述由正在運行的應用程序所需的靜態資源,是的,編譯模塊由各種靜態資源的組成,但我會以這種方式重新理解您的理解:ClientBundle是靜態內容可以包含在GWT模塊中以這種方式加載的方式之一儘可能高效。
感謝@Colin Alworth提供了一個非常棒的答案(+1) - 但是我仍然不會*很*在這裏看到「樹林通過森林」......可能會堅持使用「CssResource」或「ImageResource」你能否給我看一個目錄結構,包括同一個項目中的一個模塊和其中一個ClientBundles的目錄結構,並將它們與最終的輸出相關聯,並將它們發送回客戶端瀏覽器?再次感謝! – IAmYourFaja
結構非常簡單 - 聲明CssResource子接口,然後在一組圖像和css文件的同一個包中創建一個ClientBundle類型,並使用@Source註釋將ClientBundle方法映射到文件。輸出比較困難,因爲特別是對於瀏覽器而異的圖像,CSS總是會被燒入最終編譯的JS本身,並且只在需要時才被注入。我喜歡https://developers.google.com/web-toolkit/doc/latest/DevGuideClientBundle作爲討論如何使用它以及一些示例 - 如果不夠清楚,我會修改答案。 –