GWT
文档附带了有关如何使用MVP
模式here的教程。在此示例中,有两个视图,每个视图根据用户操作替换另一个视图。
在这些相当简单的视图中,仅仅view
在一个单独的类(view
)中填充所有小部件并没有太大的损失。但是对于复杂的view
,您可以为组件创建单独的view
(每个此类组件presenter
都有相应的view
),然后合并view
进入整体view
s(此合并view
可能有也可能没有单独的合并presenter
,因为所有子视图已经有相应的presenters
)。有点类似于在单独的类中创建单独的小部件,这些小部件扩展Composite
,在其上调用initWidget
,并在主面板中使用它们,如mainPanel.add(new subPanel())
。
那么可以在MVP
中以GWT
模式进行此类操作吗?
答案 0 :(得分:1)
不,如果你一次性完成整个DOM
加载,即使你把if else
条件放在里面。
使用GWT
构建大型应用程序时,必须使用MVP和代码拆分 - 否则,
整个应用程序(即JavaScript包)在初始版本的一个块中下载
加载应用程序,这对于受挫的用户来说是一个很好的配方!
通过使用标准MVP,您可以
Isolate of User Interface from Business tier
Easily interchangeable Views (user interfaces)
Ability to test all code more effectively
我想你期待如下
public class MainPageView extends ViewImpl implements MainPagePresenter.MyView {
@UiField
public HTMLPanel mainMenuPanel;
@UiField
public HTMLPanel mainContentPanel;
@UiField
public HTMLPanel mainFooterPanel;
.
.
.
.
.etc
是的,而不是如上所示的面板,您也可以使用内部包含一些元素的类。
更新
要mainMenuPanel
,您可以像mainMenuPanel.add(new MyheaderClass())一样添加您的类。
MyheaderClass
扩展到Panel
或Widget
的位置。因此,类中的所有元素都添加到mainMenuPanel
在MyheaderClass
课程中,您可以使用labels
添加buttons
,this.add(mybutton)
...等等。