我有一个依赖于一些外部 JS 文件的小部件,我想延迟加载所有这些外部资源。我已经使用代码拆分来延迟加载与小部件有关的 GWT 代码,但是使用标记在 gwt.xml 中定义的 JS 文件script无论如何都会被加载,这是不可取的。
是否有标准的 GWT 方式按需加载这些外部资源?我可以自己使用原始 JS 来完成,但我也不想花时间在这上面。
我有一个依赖于一些外部 JS 文件的小部件,我想延迟加载所有这些外部资源。我已经使用代码拆分来延迟加载与小部件有关的 GWT 代码,但是使用标记在 gwt.xml 中定义的 JS 文件script无论如何都会被加载,这是不可取的。
是否有标准的 GWT 方式按需加载这些外部资源?我可以自己使用原始 JS 来完成,但我也不想花时间在这上面。
我想你会想看看这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();
该代码当然可以从您的分割点中调用,或者实际上可以在您的代码中的任何位置调用。
ScriptInjector 非常便携。它没有任何外部依赖项,因此您应该能够将其反向移植到您的 2.3 应用程序中而不会出现太大问题。