我正在使用Google Maps API編寫GWT應用程序(mapfaire.com),並且我想使用utilities library。爲這些庫編寫一個JSNI包裝並不是問題,但是如何確保編譯器將JS「烘烤」到應用程序本身中,而不是通過module script include單獨下載它們?將Javascript綁定到GWT應用程序
回答
在GWT 2.4添加ScriptInjector http://gwt-code-reviews.appspot.com/1451818/
ScriptInjector.fromUrl("http://example.com/foo.js").setCallback(
new Callback<Void, Exception>() {
public void onFailure(Exception reason) {
Window.alert("Script load failed.");
}
public void onSuccess(Void result) {
Window.alert("Script load success.");
}
}).inject();
如果許可證允許您這樣做,那麼您可以將庫的整個JS代碼複製並粘貼到JSNI方法中。
你也可以使用一個TextResource這樣的:
public static interface Resources extends ClientBundle {
@Source("some.js")
TextResource someJs();
}
public void onModuleLoad() {
final Resources resources = GWT.create(Resources.class);
eval(resources.someJs().getText());
}
private static native void eval(String s) /*-{
eval(s);
}-*/;
的「some.js」文本將被直接扣留到最終的應用程序。不會有任何單獨的下載。
是的,我可以,但我真的很想c精簡。我可能會在生成過程中將文件作爲依賴項移入。 – 2010-11-20 17:45:48
@Sudhir:我完全明白這一點。但是,gwtc只是一個Java to JavaScript編譯器/轉換器,它可以另外包含JSNI提供的JavaScript。所以我沒有看到一個直接的方法。也許你可以像這樣構造一個間接的解決方案:將JS代碼作爲TextResource(ClientBundle),然後評估JSNI中的文本。還沒有嘗試過呢! – 2010-11-20 18:04:20
現在,它可以將js文件標記爲腳本資源,並確保它在模塊運行之前下載。我試圖看看是否有人知道我可以告訴GWT將這個文件放入模塊本身的方式。它仍然會執行完全相同的操作,請求數量更少。 – 2010-11-20 18:15:59
你可以定義一個ClientBundle爲您的JavaScript資源這樣的:
public interface JsResources extends ClientBundle {
final JsResources INSTANCE = GWT.create(JsResources.class);
@Source("myAwesomeJavaScript.js")
TextResource myAwesomeJavaScript();
}
並將其包含在您的應用程序與ScriptInjector:
ScriptInjector
.fromString(JsResources.INSTANCE.myAwesomeJavaScript().getText())
.inject();
imo這是最好的解決方案,將js捆綁到一個文本資源將減少額外的http請求來加載js。 – 2014-05-12 07:14:15
- 1. 將GWT應用程序部署到Godaddy
- 2. 將Javascript事件處理程序綁定到Ajax HTML響應?
- 3. flex應用程序綁定到url
- 4. WPF綁定到應用程序屬性
- 5. SLComposeViewController綁定到應用程序
- 6. 使用JQuery和JavaScript將事件綁定到單頁應用程序的DOM
- 7. 如何將JavaScript文件捆綁到Java應用程序中?
- 8. 將應用程序綁定到特定的JBoss套接字綁定
- 9. 綁定到的innerHTML在MetroStyle應用程序從Javascript
- 10. 將facebook用戶綁定到應用程序用戶
- 11. IIS應用程序綁定
- 12. 使用WPF應用程序將列表綁定到Telerik RadGridView
- 13. 將GWT應用程序轉換爲Android應用程序。
- 14. WPF將綁定日期時間綁定到應用程序資源
- 15. 從Servlet重定向GWT應用程序
- 16. 無法將集合綁定到WPF應用程序中的Listview?
- 17. 將mongodb綁定到bluemix上的spring應用程序
- 18. 將鍵組合綁定到您的應用程序
- 19. 如何將一個服務綁定到多個應用程序
- 20. 如何將usercontrol綁定到應用程序viewmodel
- 21. 將數據庫綁定到我的Java Web應用程序
- 22. 如何將圖像綁定到Windows應用程序中的DataGridView
- 23. 將網頁元素綁定到Android應用程序
- 24. 在Cloud Foundry中將Java應用程序綁定到MySQL
- 25. 如何將AJAX數據綁定到Flask Python應用程序?
- 26. 將多個Facebook帳戶綁定到一個應用程序
- 27. 如何將gridview綁定到wcf服務應用程序?
- 28. 將應用程序綁定到AIDL服務的問題
- 29. GWT FormPanel綁定到Java類
- 30. 使用NetBeans將GWT應用程序部署到Google App Engine
哇,看起來它是1.6以來的很長一段時間:D – 2011-07-15 15:37:30