【问题标题】:When should I use Code Splitting?, Are split fragments loaded once?我什么时候应该使用代码拆分?,拆分片段是否加载一次?
【发布时间】:2013-10-14 07:05:11
【问题描述】:

当我在 Eclipse 中创建 PresenterWidget 时,没有代码拆分选项,所以我假设我的 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();
  }
});

所以,我的第一个问题是:

1、当用户来到Header页面时,webapp会下载MyDialogBox的所有GUI吗?

第二,假设用户在同一浏览器和同一会话中第二次访问页面Header,那么webapp会下载MyDialogBox的所有GUI吗? (如果它在同一个会话中,那么我相信它不会再次下载,因为 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();
      }
    });
  }
});

我的假设是当用户访问Header 页面时,Webapp 不会下载此代码。但是当用户单击按钮“b”时,它将下载代码。但我的问题是

如果你第一次点击按钮,那么它会下载,但是如果用户第二次甚至第三次点击同一个按钮,那么应用程序会继续下载相同的GUIDialogBox 在第二次/第三次?或者应用程序在第一次下载时会在其他地方捕获DialogBoxGUI,并且当用户第二次/第三次点击时,它会回忆捕获而不是再次下载相同的东西?

我很困惑,谁能解释一下?

另外,大DialogBox值得做代码拆分吗?

【问题讨论】:

    标签: gwt gwtp


    【解决方案1】:
    • 代码拆分只在第一次需要时下载东西,所以不用担心,因为用户会有很好的体验,因为:代码每个会话加载一次,拆分片段缓存在浏览器中因为它的名字独一无二。

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

    • 我建议查看compile-report 输出,以便您了解每个片段中的代码量是多少,以及是否值得在代码中设置每个拆分点。

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

    【讨论】:

    • 非常感谢您的回答
    猜你喜欢
    • 2016-02-12
    • 2016-06-23
    • 1970-01-01
    • 2018-05-01
    • 2019-06-18
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多