我正在使用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. 如何将JavaScript文件捆绑到Java应用程序中?
- 4. 绑定到的innerHTML在MetroStyle应用程序从Javascript
- 5. 将facebook用户绑定到应用程序用户
- 6. 使用WPF应用程序将列表绑定到Telerik RadGridView
- 7. 将GWT应用程序转换为Android应用程序。
- 8. WPF将绑定日期时间绑定到应用程序资源
- 9. 从Servlet重定向GWT应用程序
- 10. 如何将usercontrol绑定到应用程序viewmodel
- 11. 将键组合绑定到您的应用程序
- 12. 在Cloud Foundry中将Java应用程序绑定到MySQL
- 13. 如何将一个服务绑定到多个应用程序
- 14. 将网页元素绑定到Android应用程序
- 15. 将应用程序绑定到AIDL服务的问题
- 16. 将mongodb绑定到bluemix上的spring应用程序
- 17. 如何将图像绑定到Windows应用程序中的DataGridView
- 18. 如何将AJAX数据绑定到Flask Python应用程序?
- 19. 使用NetBeans将GWT应用程序部署到Google App Engine
- 20. 如何在将应用程序与终端连接时将应用程序绑定到用户
- 21. 将XMLDataSource绑定到HTTP处理程序
- 22. gwt多页应用程序
- 23. Facebook应用程序。与GWT
- 24. 将Google GWT应用程序动态加载到旧网页
- 25. 将GWT作为离线应用程序部署到iPad上
- 26. 如何将GWT网站连接到Android应用程序?
- 27. 将GWT应用程序部署到其他主机
- 28. 如何将dagger2整合到GWT应用程序中?
- 29. 将GWT应用程序部署到Glassfish 3.0
- 30. 将另一个网站Embedding到GWT应用程序
哇,看起来它是1.6以来的很长一段时间:D – 2011-07-15 15:37:30