我们有一个非常大的GWT项目,导致一个大约2Mb的单片应用程序。分解它的明显方法是使用分裂点。例如,我们的应用程序是菜单驱动的,因此每个菜单操作背后的逻辑可能是一个分裂点。此外,调用GWT RPC的代码也可以是一个分裂点。通过这种方式,一个2Mb的应用程序可能会分解为一个300K的启动应用程序,其余部分在首次使用时加载。
GWT将对GWT.runAsync()的调用视为可以将JS分解为在运行时异步加载的较小部分的位置。例如要设置调用doSomething()的分割点,我们这样写:
GWT.runAsync(new RunAsyncCallback() {
public void onFailure(Throwable caught) {
Window.alert("Oh dear could not load app");
}
public void onSuccess() {
doSomething();
}
});
GWT编译器将看到此代码,并将其标记为拆分的候选者,并将代码拆分为较小的片段,这些片段将在首次使用时加载。
我们遇到的问题是,如果我们将分割点放入代码中,那么构建需要花费10-50倍的时间来执行。我想在处理包含大量类的项目时,代码效率不高。所以2分钟的构建成为20-100分钟的构建,这是不可接受的。
所以问题是,我怎样才能将分裂点放入代码中,但是除非我明确要求,否则会阻止编译器分裂?我设想日常开发会忽略分裂点,但夜间或生产构建会分裂。
有什么想法吗?