Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gwt 什么时候应该使用代码拆分?拆分片段是否加载一次?_Gwt_Gwtp - Fatal编程技术网

Gwt 什么时候应该使用代码拆分?拆分片段是否加载一次?

Gwt 什么时候应该使用代码拆分?拆分片段是否加载一次?,gwt,gwtp,Gwt,Gwtp,在Eclipse中创建PresenterWidget时没有代码拆分选项,因此我假设在调用HeaderPresenter时将下载我的PresenterWidget或对话框(在HeaderPresenter中启动)。 让我们在HeaderPresenter中查看此代码: Button b=新建按钮(“单击我”,新建ClickHandler()){ 公共作废一次点击(点击事件){ MyDialogBox myD=new MyDialogBox();///此对话框上有大量Gui(按钮、网格、css…)

在Eclipse中创建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管理员屏幕),您不希望其他人总是加载片段,也许您希望快速加载登录屏幕,因此,如果你提到的这个大对话框总是被所有用户使用,我不会拆分它,除非有其他原因,比如第一次快速加载页面

  • 我建议您查看一下输出,这样您就可以看到每个片段中的代码量,以及是否值得在代码中使用每个分割点

  • 最后,编译器中有一个新功能,它被调用,使用它,您可以优化应用程序中的片段数量


非常感谢您的回答