GWT代码拆分和碎片

时间:2011-01-12 20:06:52

标签: gwt split

在我的大GWT应用程序中,我试图拆分初始下载并且它发生了但我混淆了Leftover和独家片段。 因为例如当我使用GWT.runAsync时 - > onSuccess - > “Window.alert(”blob blob“);”在onModuleLoad上它导致下载1MB大小的片段!我认为这是其他初始片段,不是吗? 一般来说,我的问题是如何将剩余或初始片段更改为独占片段?

RGDS

纳维德哈尼

2 个答案:

答案 0 :(得分:5)

通常使用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) {
       ....
    }
}); 

相对于A类的代码将在一个独占片段中,B类将在剩余的片段中。

一般情况下,我建议您使用Compile Reports来了解代码拆分中发生的情况。

另外:在onModuleLoad中调用runAsync没有多大意义。 1MB?你确定吗?也许发布一个例子,我可以尝试了解发生了什么

答案 1 :(得分:5)

代码分割在开发模式下不起作用