0

我有一个应用程序目前运行良好并使用地理定位。我有一个调用 com.google.gwt.geolocation.client.Geolocation 的方法。

我扩展了现有的入口点并覆盖了此方法以使用本机 Geolocation 库,因此我没有任何权限弹出窗口。

如何避免两个模块的编译时间是原来的两倍?

4

1 回答 1

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代码拆分并使每个页面仅加载所需的内容:

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) {
        }
      });          
    }
 }

这种方法的优点是您只需为所有站点编译一次,并且您可以在所有页面中共享相同的代码,从而利用缓存。也有缺点,比如你的最终代码更高,开发模式可能更慢,等等。

于 2013-04-01T15:19:47.847 回答