问题 您是否尝试过将MVC用于GWT客户端代码?


您是否尝试过将MVC或任何其他UI模式用于GWT客户端代码。您在不同方法中遇到的缺陷/优势是什么?


12216
2018-01-05 21:10


起源



答案:


我认为你需要像任何其他UI框架一样对待GWT,比如Swing,Cocoa等。在MVC(或其他范例)方面,那些在那些框架中有意义的东西在GWT中也是有意义的。我认为有时人们把MVC的东西放得太远了,我喜欢它在Cocoa中的工作方式比大多数框架更多。您创建一个视图,您有一个ViewController控制视图的所有行为,然后您拥有包含所有数据的模型对象。我认为你不需要教你所有的业务逻辑,只需要在合理的地方。

在陷阱方面,您将遇到的主要问题是GWT纯粹是一种前端技术,因此从技术上讲,后端位于某个服务器上。我不认为这与编写客户端服务器swing应用程序有所不同,后者将其数据存储在某个地方的云中。区别在于GWT被编译成javascript,并且具有javascript web应用程序的所有限制,因此会有一些你根本无法在前端做的事情。比方说,例如,您想创建一个PDF并向用户显示,您不能在GWT中执行此操作,您需要调用后端为您执行此操作。另一方面,在Swing应用程序中,您可以使用itext并在客户端执行此操作。


7
2018-01-05 23:37





这里讨论了GWT的MVC模式 ,这也与此有深入的联系 博客文章

我唯一要补充的是,整个客户端代码可以被认为是“MVC”中的“V”,这可能会改变你看待它的方式。将客户端代码视为自己的嵌套MVC组件,它是Java,它是面向对象的,所以它可以像Swing应用程序一样设计。我认为将尽可能多的Controller代码从View中拉出以处理GWT RPC的东西对你有利。模型有时更成问题,因为您可能必须决定是否要在服务器而不是客户端上使用它。或者创建模型代理等。


5
2018-01-05 23:17





http://code.google.com/p/gwt-mvc/ 可以帮到你。

优点是:

  • 易于阅读的控制器
  • 历史代币管理
  • 控制器可以使用JMock(但不是GwtTestCase)进行测试
  • 分层MVC
  • 简单继承,开始编写视图,控制器和模型。

1
2018-02-17 09:02





你试过GWTruts(http://sourceforge.net/projects/gwtruts/)? 它也是一个开源的GWT MVC框架,它将GWT中的View和Controller分开


0
2018-03-04 10:21





当GWT应用程序超越最小的项目时,使用某种MVC / MVP类型模式非常重要,否则您只是无法控制正在发生的事情。

除了已经提到的内容之外,还有GXT的MVC实现,我在这里看到了: http://www.bristol-gtug.org/?p=45

去年Google IO上的这次演讲让很多人不再考虑GWT上的MVC / MVP: http://code.google.com/events/io/2009/sessions/GoogleWebToolkitBestPractices.html

我最近注意到GWT文档中现在还有一个关于MVP架构的教程,这是一个很好的开始: http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.html


0
2018-03-14 11:27





你可以看一下JetPad-Mappers,一个在JetBrains开发的简约MVC框架,用于几个(目前未发布的)产品。

免责声明,我参与了这个框架的开发。


0