GWT代码拆分集成:MVP和活动/地点

时间:2012-10-23 09:04:09

标签: java gwt mvp gwt-activities gwt-places

假设您有一个包含选项卡式窗格的“显示区域”(AcceptsOneWidget)。单击其他选项卡(即,从“ fantastico ”转到“配置文件”)会导致在窗格内显示全新内容。这似乎是codesplitting的完美用例,因为在用户单击“ profile ”选项卡之前,他们不需要下载显示它所需的代码。 (注意:如果任何GWT大师不同意并且不认为这是代码分裂的正确用例,那么请指出我的意思,但除了这个问题的重点之外,所以请你忍受我!)

enter image description here

现在,如果我对基本GWT架构的理解是正确的,那么显示“配置文件”选项卡所需的代码由Activity组成( ies),Place(s),也许是一些MVP的东西,例如PresenterModuleEntryPoint等等。当然这取决于应用程序和开发人员(正如我在GWT中学到的那样,有许多方法可以实现相同的目标),但无论如何,它都是一堆MVP / Activity / Place“东西”。为了这个问题,我喜欢this SO question的回答者提出的模型。

阅读this article on the AsynchProvider pattern后,我试图将所有这些最佳实践结合在一起,并实现一种架构:

  • 我实现了codesplitting,使得窗格中的每个选项卡都是codesplit(是 codesplitted codesplat ?)作为自己的片段,只有当/当用户时才会下载第一次点击它
  • 显示/呈现/实现每个片段(选项卡/窗格)所需的所有代码整齐有序,并遵循上述文章中引用的AsynchProvider模式;这允许它被划分,并且不依赖于其他片段

我开始将所有部分放在一起,但仍然没有看到这两个概念如何在工作代码中绑定在一起。

我发现GWT是神秘的,强大而精彩的,但如果没有实用的代码示例,就很难学习。当然,这些线框在“ fantastico ”或“ profile ”窗格中并没有真正显示任何复杂性,所以请再次承担并假装这些都相当复杂显示具有大量丰富UI组件的区域。提前谢谢!

1 个答案:

答案 0 :(得分:2)

如果显示区域 包含 tabpane,那么无论您使用的是活动还是地点都无关紧要。

要拆分标签内容,只需使用SimplePanel作为真实的标签内容,并通过收听SelectionEvent来加载其内容。
或者,您可以使用LazyPanel createWidget将返回SimplePanel 异步加载其余代码。{/ p>