制作GWT应用程序多页

时间:2013-12-17 16:50:02

标签: java gwt

通过多页我的意思是单独的HTML文件,比如index.html,admin.html等。

现在实现这一目标的一个解决方案是在EntryPoint类中使用它:

 if (!Window.Location.getPath().toLowerCase().endsWith("myhtmlpage.html") {
   return;
 }

我想深入了解的是我的GWT应用程序有什么主要应用程序,管理员应用程序等。应用程序nocache.js文件的趋势将变大,因此加载时间更长。

问题是,上面的代码是否会阻止已编译的GWT应用程序的其他部分加载应用程序的不必要部分,比如Index EntryPoint或Admin EntryPoint的代码是单独加载的?

2 个答案:

答案 0 :(得分:2)

不,你的if / return语句不会阻止加载任何不必要的javascript代码。

分区UI javascript代码的标准方法是code splitting

模拟多个页面的标准方法是管理history & hyperlinks。基本上使用令牌来管理您的应用状态,并在网址末尾使用哈希码 - 例如#home,#admin。

我喜欢的模式是上述两种模式的组合。对于最初不需要加载的页面,我将其隐藏在具有不同历史记录标记的GWT.runAsync代码拆分调用服务器后面。对于我想动态控制服务器端内容而不必重新编译javascript的页面,我创建了一个服务器调用,我完全控制它返回通过GWT HTMLPanel在浏览器上显示的html - 当然不需要只要html结构和相应的HTMLPanel代码不改变,就重新编译。后者的另一个优点是您可以控制服务器端日志记录以跟踪页面加载统计信息。

最后,您可能想要了解GWT活动&地方,从我读到的处理历史和标准的标准这样

答案 1 :(得分:1)

对,帕特里克,

此外,没有办法对不在项目中的js库(而不是GWT)使用代码拆分方法。所以拆分页面是正确的,以避免你用于管理代码的js库,但你不在前台使用,如果你在页面中包含js并且你没有通过GWT注入它就没关系。否则,您有责任拆分代码(有一个可供所有人使用的公共包,但是每个页面都有单独的加载)

理论上,他们说,好的分裂点是一种活动(但我不相信,因为我的页面中有很多活动,单独加载每个脚本可能对性能不利,所以这是一个案例分析),您可以在compiler report

中查看拆分中包含的所有内容

花时间看这个视频,它会为你省去很多麻烦 https://www.youtube.com/watch?v=0F5zc1UAt2Y