我终于开始“获得” GWT。在任何时候,PlaceChangeEvent
都可以EventBus
像这样在应用程序上触发 a:
History.newItem("token-for-some-new-place");
这会将事件添加到总线,从而注册者ActivityManager
将其收集起来并咨询其内部ActivityMapper
以将其Activity
与PlaceChangeEvent
's关联Place
。
然后Activity
(类似于 MVP/MVC 中的演示者或控制器对象)获取所需的任何数据(通过对服务器的 RPC 调用)并执行任何业务逻辑并配置最终视图(通常是Composite
某种类型的)以显示。
只要我们谈论的是一个超级简单的 GWT 应用程序,它的主机页面上只有一个显示区域,那么就像我说的,我“明白”了它。
我现在窒息的地方是当您的应用程序包含多个显示区域(可以彼此异步更新的区域)时会发生什么。
所以我问:
ActivityMapper
s 应该有多细?是否只有一个应用程序范围内将所有sAppActivityMapper
映射到所有ies,或者是否应该有某种层次结构/分解,您有多个映射器?(如果您对此的回答类似于“这取决于您的应用程序的需求”,那么请解释什么要求/需求推动了适当的粒度级别!)Place
Activity
ActivityMapper
- 如果 a
Place
表示您的应用程序中的 URL 令牌(为了使成为Place
可收藏状态),那么当您有一个具有多个显示区域(D1、D2、D3)的更复杂的应用程序时会发生什么。一个 URL 令牌(即http://myapp.com/#token-for-some-new-place
)如何映射到 D1、D2 和 D3?这不意味着ActivityMapper#getActivity
必须能够返回一个活动列表(List<Activity>
),其start(AcceptsOneWidget, EventBus)
方法都会被调用吗?
感谢您在这里的任何帮助 - 代码示例总是很摇滚。