2

如果我理解正确:

  • Activity 是用户对小部件的操作
  • 此活动将应用程序状态移动到另一个地方
  • 由于锚点(认为现代浏览器有一个 api),url 移动了
  • 当我们共享 url 时,它定义了一个 Place,重建 State 就足够了

(因为我也是一个 javascript 人,这看起来很像 Backbone 的路由器和其他现代 JSFrameworks)

但是要重建状态,我们需要获取一些数据到服务器。P&A api中有什么可以做到这一点吗?使用 RPC,这个角色显然是由扩展 RemoteServlet 的 GreetingServiceImpl 完成的。有了 Backbone,我们就有了 Sync 对象。

但是当我查看 A&P 教程时,我从未见过这样的代码。服务器在哪里?我们那里需要 RPC 吗?它是否与 RequestFactory 混合?

4

2 回答 2

4

首先,关于术语的一点说明:

地点代表在应用程序中的位置。当您查看该屏幕时,它通常由不同的“块”组成,每个块都专用于特定的活动,例如:标题(假设带有搜索框和注销链接),导航菜单,主控中的“主控”-详细信息视图,主详细信息视图中的“详细信息”。所有这些都可以是活动(尽管不一定,从未交换到其他任何东西的东西不会获得任何活动)。

由于活动按定义显示在屏幕上,因此您可以与它们进行交互,可能会触发移动到另一个地方 ( PlaceController#goTo)。

该地点可选择与 URL同步(双向)并生成浏览器历史记录项;默认情况下使用哈希,但您可以交换实现以使用 HTML5

(位置类似于 Backbone 的路由器,只是它们经过类型检查,活动是顶部的轻层,在 Backbone AFAICT 中没有等效项)


现在回答你的问题:

GWT 是一个工具包,而不是一个框架。这意味着大多数构建块不会强迫您使用任何其他构建块(地方可以在没有活动的情况下工作,编辑器可以在没有小部件的情况下工作,等等)

活动以异步方式启动,您通常可以从那里获取数据。本着工具包的精神,您可以自由使用任何适合您的需求:GWT-RPC、RequestFactory、RequestBuilder、Errai JAX-RS、Errai Bus、XMLHttpRequest、WebSockets、AppEngine Channels 等。有些人还会将事件发布到他们的事件总线将活动与他们获取数据的方式分离。

于 2013-08-29T23:16:15.313 回答
0

MVP 描述了客户端架构。

M_model:您的应用程序处理的业务对象。

V_iew:UI 元素,显示模型的表示。

P_resenter:处理所有用户交互和修改模型的类。


假设您有一个显示和存储笔记的应用程序。

你有一些地方:

  • 在过去,地方就像一个很好的旧 HTML 页面。在MVP里面可谓是一套跑路Presenter。在我们的简单应用程序中有两个地方。每个Place只有一个运行Presenter

NotesListPlace-> 显示所有存储的笔记

NotesEditPlace-> 创建/编辑注释

NotesEditPlace:

有一个视图和一个演示者。该视图有一个 TextArea(用于注释)和一个保存按钮。演示者有一个用于保存按钮的 clickHandler(可能还有更多,但作为示例应该就足够了)

用户从笔记列表中选择一个笔记

PlaceChangeNoteListPlace->NoteEditPlace

Presenter视图中启动并注册点击处理程序。如果按下按钮,演示者从 textarea 读取输入并更新模型(一个新的 Notes-onject)

现在是服务器交互。您可以使用所需的每个(GWT)传输层。

成功回调PlaceChangeNoteListPlace.

一切重新开始。演示者启动,一个新的服务器交互来加载模型(注释列表)。视图由演示者更新...

更新 1 不需要服务器。Presenter 可以将 Model 持久化到浏览器的 localStorage 中。

更新 2 您可以使用所需的每种传输机制。请求工厂,GWT-RPC。我使用 RequestBuilder 和 GWT AutoBeans。

于 2013-08-29T21:28:07.403 回答