2013-12-13 32 views
1

我有以下要求:分發GWT模塊如JavaScript

產生這樣一種方式,它可用於一個GWT模塊/包括在GWT應用而不重新編譯它(這樣即插即用) 。這個即插即用模塊將包含一個小部件和一些隨機類。使用此模塊的GWT應用程序應該能夠擴展模塊的某些功能。

在我看來,明顯的解決方案是簡單地將GWT模塊編譯爲JS,然後分發這個JS,然後使用JSNI鏈接到它。

我想知道是否有某種標準的解決方案。

我也有興趣知道如何確保瀏覽器兼容性(即如何掛鉤到GWT的引導進程,以便我們加載相應的JS文件,爲當前瀏覽器)的想法。

+0

我沒有意識到GWT是用Java編寫的(然後編譯成JavaScript),所以我錯誤地刪除了[java]標籤。 Mea culpa! –

+0

所以你想在沒有提供widget的用戶的情況下創建一個widget? – Kieveli

+0

是的,這是一種方式。但是我認爲更準確地說,我想分發模塊而不需要在主機應用程序中重新編譯。 – Andrei

回答

0

簡而言之,如果您沒有Java源代碼,則無法直接重用GWT方法。 (這就是我稱之爲GWT的「Compile time source dependency」)。所以你已經在正確的軌道上:你必須通過JavaScript去。

項目GWT Exporter使得將GWT方法導出到JavaScript更容易。它還可以確保你的方法沒有被GWT編譯器優化(如果你從未從代碼中調用過某個方法)。

+0

謝謝,我也是考慮這個方向。但是,我需要詢問瀏覽器的兼容性。如果我使用GWT Exporter,我想我最終會得到一個支持每個瀏覽器的JS。在我的客戶端應用程序中,使用這樣的模塊,我不得不修改gwt鏈接器來僅加載當前瀏覽器的JS。你知道是否/如何做到這一點? – Andrei

+0

實際上,這應該像其他任何GWT應用一樣完成:在頁面中包含「* .nocache.js」文件,並且將加載GWT代碼(正確的排列,包括導出的JS函數)。在「onModuleLoad」結尾處,您可以啓動任何其他腳本,請參閱https://code.google.com/p/gwt-exporter/wiki/GettingStarted上標記爲「重要」的部分 –