首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT MVP导航边栏

GWT MVP导航边栏
EN

Stack Overflow用户
提问于 2013-03-26 19:31:07
回答 2查看 860关注 0票数 3

我正在使用GWT编写一个web应用程序,并遵循GWT网站上的MVP tutorial (即使用History进行导航)。

我对使用侧边栏进行导航的最佳方式感到有点困惑(例如,单击导航链接会更改主窗口中的内容。见下文)

代码语言:javascript
复制
--------------------
|     |            |
| nav |   main     |
|     |    window  |
|     |            |
|     |            |
--------------------

我认为一种可能的方法是在超文本标记语言中声明两个用于导航和内容的<div>标记。例如:

代码语言:javascript
复制
@Override
public void onValueChange(ValueChangeEvent<String> event) {

    ...

    if (token.equals("navigation")) {
        presenter = new NavigationPresenter(rpcService, eventBus, new NavigationView());
        presenter.go(RootPanel.get("navigation"));
    }

    ...

    if (token.equals("content")) {
        presenter = new ContentPresenter(rpcService, eventBus, new ContentView());
        presenter.go(RootPanel.get("content"));
    }

    ...
}

我不确定这是否是解决这个问题的最好方法。(我猜导航面板和内容窗口之间的双向通信可以通过EventBus完成?此方法在更改UI时是否灵活(例如,对于移动网站)

我想知道人们会建议什么是最好的方式。我读过很多关于Activities and Places的文章,并经常深入讨论,但据我所知,这些与MVP架构有些不同(活动和地点对browser history management很有用,尽管我认为我使用History涵盖了(?))

如有任何建议,我们将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-26 23:42:16

是的,你是对的:Activies and Places是关于历史和导航管理的,这是GWT中的一个框架。MVP仅仅是一种架构设计模式。您可以使用您链接的文章中所示的框架来实现MVP

在您的示例中,您可以按您所说的做,但我会将每个视图设为(惰性的)单例,以避免任何潜在的代价高昂的重新创建。就我个人而言,我不喜欢这种方式,你最终会用(这么多) HasXxx接口来定义你的Display

我认为,如果历史记录管理很重要,那么选择Activities and Places几乎是不需要动脑筋的(至少对我来说是这样,至少在定义应用程序的框架方面是这样)。Here你可以找到一篇非常好的文章来帮助你入门。您将看到您的用例有多常见:您必须定义显示区域(导航和主要区域),这些区域将在位置更改时做出反应(感谢活动管理器),并创建/重新启动活动,这些活动将反过来更新UI。这样,您就实现了某种应用程序范围内的MVP,其中的展示者就是活动。

MVP而言,没有最好的方法:part 1part 2MVP with A&P只是实现相同目标的不同方法:分离表示和业务逻辑,以及纯粹的junit测试。简单地选择你喜欢的。参考群组上的this文章。

希望这能帮你入门。

票数 3
EN

Stack Overflow用户

发布于 2013-03-27 04:28:35

对于我的应用程序,我使用ClientFactory,就像在GWT文档中一样,视图使用单例。

这样,应用程序结构(包括菜单)也是ClientFactory中引用的单例,因此每个其他视图都可以通过其接口直接访问它。

例如,一些视图可能会在标题中推送一些图像,隐藏菜单以显示视频,或者您需要的任何内容。大多数时候,应用程序的结构不需要单独的活动/位置来将其状态“持久化”在历史堆栈中……

我知道大多数人不喜欢视图相互调用,我也是,唯一的例外是应用程序的结构视图,这是一种特定的视图:它有一个不是活动的展示者,并且视图本身是永久显示的。

通过通知在你的应用程序结构和其他视图之间进行交流,将使你的应用程序成为一个意大利面碗。我曾经使用过像PureMVC这样的框架,它们在很大程度上依赖于事件/通知来在视图之间通信,而这种分离有一个高昂的代价:可维护性和代码可读性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15635965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档