我有一个应用程序目前运行良好并使用地理定位。我有一个调用 com.google.gwt.geolocation.client.Geolocation 的方法。
我扩展了现有的入口点并覆盖了此方法以使用本机 Geolocation 库,因此我没有任何权限弹出窗口。
如何避免两个模块的编译时间是原来的两倍?
我有一个应用程序目前运行良好并使用地理定位。我有一个调用 com.google.gwt.geolocation.client.Geolocation 的方法。
我扩展了现有的入口点并覆盖了此方法以使用本机 Geolocation 库,因此我没有任何权限弹出窗口。
如何避免两个模块的编译时间是原来的两倍?
在 GWT 中,通常每个应用程序或 perl 页面都有一个入口点.html
,但您可以有其他场景:您可以有一个具有多个入口点的模块文件 (.gwt.xml),或者一个加载多个模块的页面 (.cache .js),甚至您可以在不同的页面中加载相同的模块(.cache.js)。
因此,在您的情况下,您可以维护一个入口点和一个模块文件,并在两个页面中包含相同的编译模块。在这种情况下,您必须在入口点中编写一些代码才能知道在每个页面中要做什么:
public void onModuleLoad() {
if (Window.Location.getPath().matches(".*page_1.html.*")) {
// do something
} else {
// do another thing
}
}
认为在这种情况下,您将在两个页面中都有所有已编译的内容,但是您可以利用 gwt代码拆分并使每个页面仅加载所需的内容:
public void onModuleLoad() {
if (Window.Location.getPath().matches(".*page_1.html.*")) {
GWT.runAsync(new RunAsyncCallback() {
public void onSuccess() {
// do something
}
public void onFailure(Throwable reason) {
}
});
} else {
GWT.runAsync(new RunAsyncCallback() {
public void onSuccess() {
// do another thing
}
public void onFailure(Throwable reason) {
}
});
}
}
这种方法的优点是您只需为所有站点编译一次,并且您可以在所有页面中共享相同的代码,从而利用缓存。也有缺点,比如你的最终代码更高,开发模式可能更慢,等等。