GWT:延迟加载外部JS资源

Ion*_*tan 11 gwt deferred-loading

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

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

Col*_*rth 17

我想你会想看看这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();
Run Code Online (Sandbox Code Playgroud)

这个代码当然可以从你的分裂点内部调用,或者在代码中的任何地方调用.