我有一个小部件取决于一些外部JS文件,我想懒惰加载所有这些外部资源。我已经使用代码拆分来延迟加载与窗口小部件有关的GWT代码,但是无论如何都加载了使用script
标记在gwt.xml中定义的JS文件,这是不可取的。
是否有按需加载这些外部资源的标准GWT方式?我可以使用原始JS自己做,但我不想花时间在这上面。
答案 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应用程序中而没有太多问题。