2009-12-20 134 views
1

我想开发一个GWT应用程序。该应用程序包含8个模块,所有模块都在一个页面中运行。GWT懒惰加载

我有链接顶部的所有7个选项。

当页面加载时,我只想要加载和显示家庭内容。

只有当用户点击菜单选项时,才会加载菜单内容。

任何人都可以提出实现这一目标的最佳方法。

+0

如果你还没有找到答案,它可能会帮助,如果你更具体的问题...否则做你的问题标记为答案。 – 2010-01-26 06:08:26

回答

0

AFAIK,懒惰加载(或可插拔)模块不能在GWT中完成。部分原因是由于GWT编译器的工作方式 - 它喜欢导入它将要看到的所有代码,然后尽可能恶化地优化和修剪它(使得生成的JS文件尽可能小并且领先) 。如果预先无法访问所有源代码,则可能会进行优化,从而中断可插拔模块(尤其是因为“核心”应用程序中没有任何内容可以引用延迟加载模块需要正常工作的类 - GWT编译器会修剪核心模块中的那些“未使用”的类)。

这个stackoverflow question from May 09问同样的事情,并有相同的答案 - 它不能完成。

我大概在六个月前搜索了高和低的答案来解决这个问题,因为我真的想做我相信你所要求的。从未找到解决方案。

(我没有使用GWT 2.0 - 它可能已经解决了这个问题)

+0

GWT已经解决了这个问题。 – Carnell 2009-12-20 16:35:18

6

这在GWT 2.0得到解决......首先你会删除你必须为每个模块独立的入口点 - 因为他们都在同一页面上,每个页面只需要一个入口点。

然后,您可以在每个感觉可以是分裂的点上使用GWT.runAsync()方法......它会自动将代码分割为在必要时下载的块。

查看here的文档。

+0

虽然在编译方面呢?你是否还想在任何时候想要对“插件”模块进行更改时编译所有内容?代码分割指南在这方面似乎没有特别清楚。 – Ash 2009-12-20 21:52:02

+0

GWT 2.0还附带了一个非常有趣的开发模式,可以消除头痛(或者完全隐藏它)。您运行该应用程序,安装浏览器插件,并进行更改并点击刷新。这就是它 - http://code.google.com/webtoolkit/doc/latest/ReleaseNotes.html#NewFeaturesDevMode – 2009-12-21 16:54:06

0

谢谢你的回答。你说得对,整个Javascript代码都被下载了。

但是,必须有一个像模块说的方式是查看配置文件。只有当用户点击视图配置文件链接时,才需要创建与显示我的配置文件相关的小部件。这是不可能的。

+0

它很容易成为可能......我附加了文档的链接。关于这个话题还有很多关于Google I/O的讨论 – 2010-06-18 05:34:00