我什么时候应该使用Code Splitting ?,拆分片段加载一次吗?

Tum*_*Tum 3 gwt gwtp

没有Code Splitting选项当我PresenterWidget在Eclipse中创建时,所以我假设在调用时将下载my PresenterWidgetDialogBox(启动时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"时它会下载代码.但我的问题是

如果您单击该按钮一次,然后它会下载,但如果用户点击同一按钮第二次,甚至第三次,然后将应用程序继续下载相同GUIDialogBox在第二/第三时间?或将应用程序赶上GUI了的DialogBox其他地方,当下载第1次和当用户点击第二/第三次它将恢复捕捞,而不是再次下载同样的事情?

我很困惑,任何人都可以澄清吗?

另外,为大型代码分割是否值得DialogBox

Man*_*ino 6

  • 代码分割仅在第一次需要时下载内容,所以不要担心它,因为用户将获得良好的体验,因为:每个会话加载一次代码,并且分割片段在浏览器中缓存,因为它的唯一名称.

  • 您在应用程序中必须执行的拆分数取决于不同的事情,一个是每个片段中的代码量是否足够大,另一个是您有访问应用程序的一部分的用户(id管理屏幕)和你不希望别人总是加载片段,也许你想要快速加载登录屏幕等等.所以如果你提到的这个大的DialogBox总是被所有用户使用,我不会拆分它,除非有其他原因喜欢第一次快速加载页面.

  • 我建议您查看编译报告输出,以便了解每个片段中的代码量,以及是否值得在代码中使用每个分割点.

  • 最后,编译器中有一个名为fragmentCount的新功能,玩这个功能可以优化应用程序中的片段数量.