Gwt 什么时候应该使用代码拆分?拆分片段是否加载一次?
在Eclipse中创建Gwt 什么时候应该使用代码拆分?拆分片段是否加载一次?,gwt,gwtp,Gwt,Gwtp,在Eclipse中创建PresenterWidget时没有代码拆分选项,因此我假设在调用HeaderPresenter时将下载我的PresenterWidget或对话框(在HeaderPresenter中启动)。 让我们在HeaderPresenter中查看此代码: Button b=新建按钮(“单击我”,新建ClickHandler()){ 公共作废一次点击(点击事件){ MyDialogBox myD=new MyDialogBox();///此对话框上有大量Gui(按钮、网格、css…)
PresenterWidget
时没有代码拆分选项,因此我假设在调用HeaderPresenter
时将下载我的PresenterWidget
或对话框
(在HeaderPresenter
中启动)。
让我们在HeaderPresenter
中查看此代码:
Button b=新建按钮(“单击我”,新建ClickHandler()){
公共作废一次点击(点击事件){
MyDialogBox myD=new MyDialogBox();///此对话框上有大量Gui(按钮、网格、css…)
myD.show();
}
});
因此,我的第一个问题是:
首先,当用户进入页面标题时,webapp会下载MyDialogBox
的所有GUI吗
第二,假设用户在同一浏览器和同一会话上第二次访问页面标题,那么webapp会下载MyDialogBox
的所有GUI吗?(如果它在同一个会话上,那么我相信它不会再次下载,因为GUI在别处被捕获)
好的,现在我将按照Google的建议进行代码拆分,如下所示:
Button b=新建按钮(“单击我”,新建ClickHandler()){
公共作废一次点击(点击事件){
GWT.runAsync(新的RunAsyncCallback(){
失败时的公共无效(可丢弃){
Window.alert(“代码下载失败”);
}
成功时的公共无效(){
MyDialogBox myD=new MyDialogBox();///此对话框上有大量Gui(按钮、网格、css…)
myD.show();
}
});
}
});
我的假设是,每当用户访问Header
页面时,Webapp都不会下载此代码。但当用户点击按钮“b”时,它会在上下载代码。但我的问题是
如果您第一次单击按钮,那么它将下载,但是如果用户第二次甚至第三次单击同一按钮,那么应用程序是否会继续第二次/第三次下载与对话框相同的GUI
?或者,当应用程序第一次下载时,它会在别处捕捉到对话框的GUI
,当用户第二次/3次单击时,它会回忆捕捉到的内容,而不是再次下载相同的内容
我很困惑,有人能澄清一下吗
另外,是否值得对大的对话框进行代码拆分?
- 代码拆分只在第一次需要的时候下载,所以不用担心,因为用户会有一个很好的体验,因为:每个会话加载一次代码,拆分片段会永远缓存在浏览器中,因为它的唯一名称
- 您在应用程序中必须执行的拆分数量取决于不同的事情,一个是如果每个片段中的代码量足够大,另一个是您的用户可以访问应用程序的一部分(id管理员屏幕),您不希望其他人总是加载片段,也许您希望快速加载登录屏幕,因此,如果你提到的这个大对话框总是被所有用户使用,我不会拆分它,除非有其他原因,比如第一次快速加载页面
- 我建议您查看一下输出,这样您就可以看到每个片段中的代码量,以及是否值得在代码中使用每个分割点
- 最后,编译器中有一个新功能,它被调用,使用它,您可以优化应用程序中的片段数量
非常感谢您的回答