GWT.runAsync(...)
モジュールのメソッド内や他のメソッド内から呼び出されるのを見onModuleLoad()
たことがあります。そのため、GWT アプリ内のどこからでもフラグメントをプルダウンすることは「合法」であるように思われます。
しかし、これは私に考えさせました: アプリ内のどこからでもコード分割されたフラグメントのダウンロードを開始できる場合、このメソッドを実行したときに実際にプルダウンされる Java クラス (実行時に既に JavaScript にコンパイルされている) は何ですか? ? 明らかにこれは構成可能ですが、サーバー側から引き戻されるものを構成する方法を示すコード例が見つかりません。Codesplittingの公式ドキュメントでさえ、 を呼び出す 方法のクライアント側の例しかありGWT.runAsync
ませんが、サーバー側のフラグメントに接続する方法はありません。
JavaDocsでは、このメソッドはオーバーロードされており、次の 2 つのバリアントがあります。
runAsync(java.lang.Class<?> name, RunAsyncCallback callback)
; とrunAsync(RunAsyncCallback callback)
前者では、サーバーから引き戻したい特定のクラスを指定できると思いますか? その場合、実行時にサーバー上でクラスを見つけて引き戻すために必要な構成 (クラスパス、検索パスなどの構成) はありますか?
最も重要なことは、後者のオーバーロードがどのように機能するか?! プルバックするクラスを指定していない場合、GWT はどのクラスをプルバックするかをどのように判断するのでしょうか?
例
私のアプリに次のSomething
クラスが含まれているとします。このクラスは、(何らかの方法で) 特定のモジュールのフラグメントの 1 つに配置され、JavaScript にコンパイルされます。さらに、内部に存在するフラグメントが延期され、モジュールの最初のフラグメントと一緒にダウンロードされないように、正しく構成したとしましょうSomething
(したがって、クライアント ブラウザー内でまだ「生きている」わけではありません)。
public class Something {
// ... Whatever
}
ユーザーがボタン ウィジェットをクリックすると、インスタンスを作成して何かを実行Something
できるように、フラグメントを含むフラグメントをダウンロードする必要があります。を含むフラグメントを指定するにはどうすればよいですか?Something
GWT.runAsync
Something