GWT:延迟加载外部JS资源

时间:2011-11-01 15:31:22

标签: gwt deferred-loading

我有一个小部件取决于一些外部JS文件,我想懒惰加载所有这些外部资源。我已经使用代码拆分来延迟加载与窗口小部件有关的GWT代码,但是无论如何都加载了使用script标记在gwt.xml中定义的JS文件,这是不可取的。

是否有按需加载这些外部资源的标准GWT方式?我可以使用原始JS自己做,但我不想花时间在这上面。

2 个答案:

答案 0 :(得分:17)

我想你想看一下com.google.gwt.core.client.ScriptInjector课程。 From the javadocs

  

动态创建脚本标记并将其附加到DOM。

     

...

     

使用脚本加载为URL:

   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();

此代码当然可以从您的分割点内调用,也可以在代码中的任何位置调用。

答案 1 :(得分:1)

ScriptInjector非常便携。它没有任何外部依赖关系,因此您应该能够将它反向移植到2.3应用程序中而没有太多问题。