在我的大GWT应用程序中,我试图拆分初始下载,它发生了但我混淆了Leftover和独家片段.因为例如当我使用GWT.runAsync - > onSuccess - >"Window.alert("blob blob");" 在onModuleLoad上导致下载1MB大小的片段!我认为这是其他初始片段,不是吗?一般来说,我的问题是如何将剩余或初始片段更改为独占片段?
RGDS
纳维德
通常使用GWT.runAsync方法,您可以创建独占片段或剩余片段.为了将一段代码从初始下载移动到独占片段,您不仅必须使用runAsync方法,还必须确保在应用程序的同步部分中未引用runAsync方法中的代码.
如果满足此条件,则您的代码可以以独占片段(如果代码未被其他runAsync方法使用)或剩余(如果在多个runAsync方法中引用)结束.
//Class A is referenced only here!
GWT.runAsync(new RunAsyncCallback() {
@Override
public void onSuccess() {
a = new A();
}
@Override
public void onFailure(Throwable reason) {
...
}
});
....
//Class B is referenced in different points but always inside async calls!
GWT.runAsync(new RunAsyncCallback() {
@Override
public void onSuccess() {
b = new B();
}
@Override
public void onFailure(Throwable reason) {
...
}
});
....
GWT.runAsync(new RunAsyncCallback() {
@Override
public void onSuccess() {
b = new B();
}
@Override
public void onFailure(Throwable reason) {
....
}
});
Run Code Online (Sandbox Code Playgroud)
相对于A类的代码将在一个独占片段中,B类将在剩余的片段中.
一般来说,我建议您使用编译报告来了解代码拆分中发生的情况.
另外:在onModuleLoad中调用runAsync没有多大意义.1MB?你确定吗?也许发布一个例子,我可以尝试了解发生了什么