没有Code Splitting选项当我PresenterWidget在Eclipse中创建时,所以我假设在调用时将下载my PresenterWidget或DialogBox(启动时HeaderPresenter)HeaderPresenter.让我们看看这段代码HeaderPresenter:
Button b = new Button("Click me", new ClickHandler() {
public void onClick(ClickEvent event) {
MyDialogBox myD=new MyDialogBox(); ///There a lot of Gui (button, grid, css...) on this dialogbox
myD.show();
}
});
Run Code Online (Sandbox Code Playgroud)
所以,我的第一个问题是:
1,webapp会MyDialogBox在用户访问页面时下载所有GUI Header吗?
2,假设用户Header第二次来到同一浏览器和SAME会话,那么webapp会下载所有的GUI MyDialogBox吗?(如果它在同一个会话中,那么我相信它不会再次下载,因为GUI在其他地方获得了Catch)
好的,现在我将根据Google http://www.gwtproject.org/doc/latest/DevGuideCodeSplitting.html的建议将此代码拆分,如下所示:
Button b = new Button("Click me", new ClickHandler() {
public void onClick(ClickEvent event) {
GWT.runAsync(new RunAsyncCallback() {
public void onFailure(Throwable caught) {
Window.alert("Code download failed");
}
public void onSuccess() {
MyDialogBox myD=new MyDialogBox(); ///There a lot of Gui (button, grid, css...) on this dialogbox
myD.show();
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
我的假设是Webapp不会在用户访问Header页面时下载此代码.但是当用户点击按钮"b"时它会下载代码.但我的问题是
如果您单击该按钮一次,然后它会下载,但如果用户点击同一按钮第二次,甚至第三次,然后将应用程序继续下载相同GUI的DialogBox在第二/第三时间?或将应用程序赶上GUI了的DialogBox其他地方,当下载第1次和当用户点击第二/第三次它将恢复捕捞,而不是再次下载同样的事情?
我很困惑,任何人都可以澄清吗?
另外,为大型代码分割是否值得DialogBox?
代码分割仅在第一次需要时下载内容,所以不要担心它,因为用户将获得良好的体验,因为:每个会话加载一次代码,并且分割片段在浏览器中缓存,因为它的唯一名称.
您在应用程序中必须执行的拆分数取决于不同的事情,一个是每个片段中的代码量是否足够大,另一个是您有访问应用程序的一部分的用户(id管理屏幕)和你不希望别人总是加载片段,也许你想要快速加载登录屏幕等等.所以如果你提到的这个大的DialogBox总是被所有用户使用,我不会拆分它,除非有其他原因喜欢第一次快速加载页面.
我建议您查看编译报告输出,以便了解每个片段中的代码量,以及是否值得在代码中使用每个分割点.
最后,编译器中有一个名为fragmentCount的新功能,玩这个功能可以优化应用程序中的片段数量.