2017-02-27 3 views
1

GWT上でJBoss Erraiフレームワークを使用してWebアプリケーションを構築しています。私たちが抱えている問題は、コンパイルされたバージョンのアプリケーションが、最適化されてコンパイルされたときにすでに約10メガバイトであることです。GWT cache.js too too - アプリケーションが表示されるまでに時間がかかります

while cache.jsファイルがロードされる前であっても、GWT/Erraiアプリが分割したり、何らかの形で初期ページを表示する方法はありますか?

答えて

1

Code Splittingメカニズムを使用できます。

あなたのコードを分割するには、単にあなたがプログラムが多くのコードをダウンロード ために一時停止することができるようにしたい 場所でメソッドGWT.runAsyncへの呼び出しを挿入します。これらの場所はスプリットポイントと呼ばれます。例えば

public class Hello implements EntryPoint { 
    public void onModuleLoad() { 
    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() { 
      Window.alert("Hello, AJAX"); 
      } 
     }); 
     } 
    }); 

    RootPanel.get().add(b); 
    } 
} 

...最初にダウンロードされたコードは、文字列の "Hello、 AJAX" ものwindow.alertを実装するために必要なすべてのコードが含まれていません。 ボタンをクリックすると、GWT.runAsyncが呼び出され、 コードのダウンロードが開始されます。正常にダウンロードされたと仮定すると、 onSuccessメソッドが呼び出されます。必要なコードには がダウンロードされているので、その呼び出しは成功します。 コードをダウンロードできなかった場合は、onFailureが呼び出されます。

あなたはマニュアルに詳細な情報を見つけるでしょう:http://www.gwtproject.org/doc/latest/DevGuideCodeSplitting.html

+0

からそれを削除するには、私は実際に(それはかなり非人気なので)それはあなたがErraiに特定の何かを見つけることは考えにくいのですErrai – xybrek

+0

のために働く何かを探しています、前述のように、コード分割は基本的なGWTメカニズムであり、あなたの正確な種類の問題に対処しています。 Erraiが特にCode Splittingを使わないようにしない限り、 – Andrei

+0

私はErraiが人気がないとは言いません。私はそれについて良いことを聞いたことがあります。 Erraiを知らないと、私は助けません(そして、Erraiは、GWTコンパイラを最適化するのに難しい/不可能なコードを生成することによって、膨大なものに人工的に貢献します; –

0

あなたが実際に最初のペイロードサイズを減らすために、スプリットポイントを使用したくない場合は、あなたが最初にいくつかのロード画面を表示することができ、ユーザーはで知っています少なくともアプリが起動していること。

によって容易に行うことができる

:あなた<script type="text/javascript" src="app.nochache.js"></script>タグ

  • そのdivにIDを付与する前に、divが追加されなければならない

    • あなたhostpage
    • にいくつかのローディングアニメーション(example)を示すdivを添加、例:loading-icon
    • onModuleLoadの方法では、*.cache.jsをロードした後、divティンそれdisplay:none;および/またはDOM