我已经看到GWT.runAsync(...)
从模块的onModuleLoad()
方法内部以及其他方法中调用,因此从 GWT 应用程序内的任何地方拉下片段似乎是“合法的”。
但这让我开始思考:如果您可以从应用程序内的任何地方下载代码分割片段,那么当您运行此方法时,哪些 Java 类(在运行时已被编译为 JavaScript)实际上被拉下? 显然这是可配置的,但我找不到任何代码示例来说明如何配置从服务器端拉回的内容。即使在Codesplitting 的官方文档中,也只有客户端如何调用 GWT.runAsync
的示例,而不是如何将其连接到服务器端片段。
在JavaDocs中,此方法被重载,并且有两种变体:
runAsync(java.lang.Class<?> name, RunAsyncCallback callback)
; 和runAsync(RunAsyncCallback callback)
我猜前者允许您指定要从服务器拉回的特定类?如果是这种情况,您是否需要进行任何配置(配置类路径、搜索路径等),以便可以在运行时在服务器上找到该类并将其拉回?
最重要的是,后者的重载是如何工作的?!如果您没有指定要拉回的类,GWT 怎么知道要拉回什么?
例子
假设我的应用程序中有以下Something
类,然后(以某种方式)放置在特定模块的片段之一中,然后编译成 JavaScript。此外,假设我正确配置了一些东西,因此存在于其中的片段Something
被延迟并且不会与模块初始片段一起下载(因此它还没有“存在”在客户端浏览器中)。
public class Something {
// ... Whatever
}
现在用户单击一个按钮小部件,我希望Something
下载包含的片段,以便我们可以创建一个Something
实例并对其进行操作。我如何使用GWT.runAsync
来指定包含的片段Something
?