GWT上でJBoss Erraiフレームワークを使用してWebアプリケーションを構築しています。私たちが抱えている問題は、コンパイルされたバージョンのアプリケーションが、最適化されてコンパイルされたときにすでに約10メガバイトであることです。GWT cache.js too too - アプリケーションが表示されるまでに時間がかかります
while cache.jsファイルがロードされる前であっても、GWT/Erraiアプリが分割したり、何らかの形で初期ページを表示する方法はありますか?
GWT上でJBoss Erraiフレームワークを使用してWebアプリケーションを構築しています。私たちが抱えている問題は、コンパイルされたバージョンのアプリケーションが、最適化されてコンパイルされたときにすでに約10メガバイトであることです。GWT cache.js too too - アプリケーションが表示されるまでに時間がかかります
while cache.jsファイルがロードされる前であっても、GWT/Erraiアプリが分割したり、何らかの形で初期ページを表示する方法はありますか?
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
あなたが実際に最初のペイロードサイズを減らすために、スプリットポイントを使用したくない場合は、あなたが最初にいくつかのロード画面を表示することができ、ユーザーはで知っています少なくともアプリが起動していること。
によって容易に行うことができる:あなた<script type="text/javascript" src="app.nochache.js"></script>
タグ
div
にIDを付与する前に、div
が追加されなければならない
div
を添加、例:loading-icon
onModuleLoad
の方法では、*.cache.js
をロードした後、divティンそれdisplay:none;
および/またはDOM
からそれを削除するには、私は実際に(それはかなり非人気なので)それはあなたがErraiに特定の何かを見つけることは考えにくいのですErrai – xybrek
のために働く何かを探しています、前述のように、コード分割は基本的なGWTメカニズムであり、あなたの正確な種類の問題に対処しています。 Erraiが特にCode Splittingを使わないようにしない限り、 – Andrei
私はErraiが人気がないとは言いません。私はそれについて良いことを聞いたことがあります。 Erraiを知らないと、私は助けません(そして、Erraiは、GWTコンパイラを最適化するのに難しい/不可能なコードを生成することによって、膨大なものに人工的に貢献します; –