2014-01-29 48 views
1

我正在用MVC模式开发一个带extJS的应用程序,但我不确定在哪里放置业务逻辑来保持它的可测试性。ExtJS 4 MVC结构与测试

让我们看看下面的例子: 我有一个包含一些数字的商店。如果我点击一个Button(Button1),我想要做一些计算,并希望在之后的弹出窗口中显示结果。

这是我的方法: Button --onClick - > Controller1(事件监听器) - > Controller2(从存储中收集数字,进行计算)---> Controller1(异步调用结果)创建一个新的弹出框

当我这样做时,我可以轻松地在Controller2中测试计算,因为它与任何视图都是绝对分离的。

这导致了两种类型的控制器: - 与意见(事件侦听器,并弹出引发剂) 交互控制器 - 控制器与业务逻辑

这是正确的做法?

+0

你现在真的想要什么?为什么你需要两个控制器来做这么简单的操作? – vino20

+1

@ vino20操作的简单性应该不重要。 OP更多的是体系结构的问题,而不是如何完成特定的任务。 – existdissolve

+0

@existdissolve,我接受你的话。 – vino20

回答

1

好吧,这里有一点争论。内置于Ext JS中的vanilla MVC方法通常利用控制器来实现业务逻辑和视图事件管理。所以,如果你想跟随其中的许多Ext JS MVC教程,你可能会发现这种模式。

但是,其他人更喜欢将视图更加分离,选择一个ViewController类,比如你所建议的。你可能会检查出DeftJS的一个很好的实现。 http://deftjs.org/

最终,我认为这并不重要。我认为你应该在某种程度上写一个应用程序认为:

  1. 如下几个组标准约定的
  2. 对你有意义
  3. 作品
  4. 是可持续的,可扩展的

我认为这两种方法都很容易满足这些要求(我已经完成了这两项工作),所以最终我会认为这取决于您的偏好以及您最喜欢的实施方式。