使用iPhone UIWebView的GWT共享入口点

时间:2013-04-01 11:04:20

标签: iphone gwt geolocation

我有一个应用程序,目前工作正常并使用地理位置。我有一个调用com.google.gwt.geolocation.client.Geolocation。

的方法

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

如何避免使用两个需要两倍编译时间的模块?

1 个答案:

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

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