3

Eclipse で作成する場合、コード分割オプションはありません。そのため、 (で開始された)またはが呼び出されたときにダウンロードされるPresenterWidgetと想定しています。でこのコードを見てみましょう:PresenterWidgetDialogBoxHeaderPresenterHeaderPresenterHeaderPresenter

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();
  }
});

だから、私の最初の質問は次のとおりです。

MyDialogBox第 1 に、Web アプリケーションは、ユーザーがページにアクセスしたときにすべての GUI をダウンロードしますHeaderか?

2番目に、ユーザーがHeader同じブラウザと同じセッションで2回目にページにアクセスすると、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();
      }
    });
  }
});

ユーザーがページにアクセスするたびに Webapp がこのコードをダウンロードすることはないと思いHeaderます。ただし、ユーザーがボタン「b」をクリックすると、コードがダウンロードされます。しかし、私の質問はそれです

最初にボタンをクリックするとダウンロードされますが、ユーザーが同じボタンを 2 回目または 3 回目でもクリックすると、アプリは 2 回目または 3 回目に同じものをダウンロードし続けますGUIDialogBox? または、アプリは最初にダウンロードしたときに他GUIDialogBox場所をキャッチし、ユーザーが2回目または3回目にクリックすると、同じものを再度ダウンロードするのではなく、キャッチを呼び戻しますか?

私は混乱しています、誰かが明確にすることができますか?

また、 big のコード分割を行う価値はありますDialogBoxか?

4

1 に答える 1

6
  • コード分​​割は最初に必要になったときにのみダウンロードするため、心配する必要はありません。コードはセッションごとに 1 回読み込まれ、分割されたフラグメントは一意の名前であるためブラウザに永久にキャッシュされます。

  • アプリケーションで行う必要がある分割の数は、さまざまな要因によって異なります。1 つは、各フラグメントのコード量が十分に大きい場合、もう 1 つは、アプリケーションの一部 (ID 管理画面) にアクセスするユーザーがいる場合です。他の人にフラグメントを常にロードさせたくない、ログイン画面を高速にロードしたいなど。 したがって、あなたが言及したこの大きな DialogBox がすべてのユーザーによって常に使用されている場合、他の理由がない限り、分割しません。最初のページの高速読み込みのように。

  • コンパイル レポートの出力を確認することをお勧めします。これにより、各フラグメントのコード量と、コードに各分割ポイントを含める価値があるかどうかを確認できます。

  • 最後に、コンパイラにはfragmentCountと呼ばれる新しい機能があり、これを使ってアプリのフラグメント数を最適化できます。

于 2013-10-12T11:15:23.483 に答える