将AngularJS应用转换为GET(MVP)

时间:2014-04-03 02:42:59

标签: angularjs gwt gwt-mvp

我需要将以下AngularJS application转换为GWT应用程序(尽管该问题适用于任何角度应用程序)。我想按照文档中的建议使用MVC patternUiBinder,但我不确定角度应用程序的组件应如何与GWT组件对应。

我已经考虑过了一些想法,这是我的理解 - 如果有人能说我做得对,我会感激

  1. 每个模块都应成为演示者
  2. 每位演示者一个视图
  3. 必须在 AppController 中初始化服务并将其传递给相关的演示者(类似于MVC description eventBus 的实现方式)
  4. 现在我不知道如何将多个演示者放在一起,以便他们创建一个页面。我应该创建一个与 AppController 对应的视图,然后将该视图的相关部分传递给每个演示者吗?

    另外,处理模态对话框的最佳方法是什么?我是否应该将它们包含在视图中,绑定到演示者并最初隐藏它们?

2 个答案:

答案 0 :(得分:1)

我建议使用Activities and Places或完全成熟的MVP框架,如GWTP

关于你的问题:

  1. 我认为这是对的
  2. 每个演示者的一个视图是通常的方法。但是,您也可以考虑为不同的设备(桌面,移动等)实现不同的视图。
  3. 我建议使用像GIN这样的依赖注入框架将服务和组件注入Presenters
  4. 这取决于您使用Activities and Places还是GWTPGWTP具有PresenterWidget的conecept,可以嵌套在Presenters中。对于Activities and Places,您可以关注Thomas Broyer的recommendation

    一般来说,我认为Presenters及其对应的Views应该是通常与Place相关联的独立组件。 GWTP具有Slots(即侧面导航等)的概念,其中Presenters可以显示自己。

    Presenters之间的通信应通过EventBus完成。 GWTP的概念为PopupPresenters但通常我认为模态对话框应包含在View中并由父Presenter处理(除非它包含许多业务逻辑) 。

答案 1 :(得分:0)

你说:

  

每个模块都应成为演示者

查看[GWT组织项目] [1] http://www.gwtproject.org/doc/latest/DevGuideOrganizingProjects.html 它讨论了“模块:配置单元”一节中的模块 基本上,模块仅用于配置。每个入口点都需要一个模块。人们通常每页有1个模块。

你说:

  

每位演示者一个视图

通常就是这种情况。

你说:

  

必须在AppController中初始化服务并将其传递给相关的演示者(类似于在MVC描述中如何实现eventBus)

就像Ümit所说你应该使用Gin

Ümit推荐GWTP我不是GWTP的专家,但是当我还是初学者的时候我用它很简单而且很难。我不认为这对初学者有好处。不可否认,学习它的投资可能是值得的。就像我说的那样,我不是GWTP的专家。