将Javascript捆绑到GWT应用程序中

Sud*_*han 5 gwt

我正在GWT(mapfaire.com)中编写一个使用Google Maps API 的应用程序,我想使用实用程序库.为库编写JSNI包装器不是问题,但是如何确保编译器将JS"烘焙"到应用程序本身,而不是通过模块脚本单独下载?

Den*_*nis 8

您可以为JavaScript资源定义ClientBundle,如下所示:

public interface JsResources extends ClientBundle {
    final JsResources INSTANCE = GWT.create(JsResources.class);

    @Source("myAwesomeJavaScript.js")
    TextResource myAwesomeJavaScript();
}
Run Code Online (Sandbox Code Playgroud)

并使用ScriptInjector将其包含在您的应用程序中:

ScriptInjector
    .fromString( JsResources.INSTANCE.myAwesomeJavaScript().getText() )
    .inject();
Run Code Online (Sandbox Code Playgroud)

  • imo这是最好的解决方案,将js捆绑到textresource将减少额外的http请求以加载js. (3认同)

小智 6

在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();
Run Code Online (Sandbox Code Playgroud)