11

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

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

4

2 回答 2

18

我想你会想看看这com.google.gwt.core.client.ScriptInjector门课。从 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();

该代码当然可以从您的分割点中调用,或者实际上可以在您的代码中的任何位置调用。

于 2011-11-01T17:58:50.483 回答
1

ScriptInjector 非常便携。它没有任何外部依赖项,因此您应该能够将其反向移植到您的 2.3 应用程序中而不会出现太大问题。

于 2011-11-15T09:56:19.963 回答