我有一个应用程序,目前工作正常并使用地理位置。我有一个调用com.google.gwt.geolocation.client.Geolocation。
的方法我扩展了现有的入口点并重写了此方法以使用本机Geolocation库,因此我没有任何权限弹出窗口。
如何避免使用两个需要两倍编译时间的模块?
答案 0 :(得分:0)
在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 code-splitting并使每个页面加载所需的内容:
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) {
}
});
}
}
这种方法的优点是您只为您的所有站点编译一次,并且您在利用缓存的所有页面中共享相同的代码。还有一些缺点,比如你的最终代码更高,开发模式可能更慢等等。