2011-01-12 57 views
2

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

RGDS

纳维德

回答

4

一般来说你可以创建专属片段或剩菜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?你确定?也许后一个例子,我可以尝试了解发生了什么事情

4

代码分裂的发展模式

+0

没有做好工作的URL:http://127.0.0.1:8888/Projextxxxxxxx.html GWT? codesvr = 127.0.0.1:9997删除?gwt.codesvr = 127.0.0.1:9997部分,您将模拟Web开发。 – 2012-06-05 15:08:17