2

我们已经使用 ExtJs 很长时间了,现在,随着 MVC 模式的出现,我们面临一个关键问题,即考虑到我们迄今为止所遵循的方法,是否在未来使用它。

在我们的应用程序中,我们有类似的屏幕,例如 40 个用于生成报告的类似屏幕等等。这些报告屏幕将有一个带有按钮的表单 - PDF、CSV、EXCEL。所有按钮在每个屏幕上都将具有相同的功能,即,将表单提交到 url 并生成特定报告。

我们一直遵循的方法是创建一个自定义类,比如说reportscreen 类,它扩展了ExtJs 的窗口类。

这个自定义报告屏幕类已经具有定义了它们的处理程序的按钮(考虑到所有屏幕的功能都相似),并且还会有一个带有函数 setFormItems() 的表单。此类的任何实例都将使用 setFormItems() 和用于生成报告的 url 为表单提供项目。

这种方法不仅帮助我们在很大程度上减少了开发工作,而且甚至允许团队的新成员使用该类并创建一个新屏幕。

现在出现在最推荐的模式 MVC 中,上面分享的方法绝对不是 MVC 模式。但是,我们真的需要在这里转向 MVC 模式吗?

使用上述方法,我们不仅可以省力,而且可以更好地控制事情。

问这个问题的目的是了解如果我们使用 MVC 模式实现上述场景并远离我们当前的方法,我们将获得的确切优势。

因此,在上面的上下文中,MVC 会带来哪些额外的东西?而且,在 MVC 模式中实现这样的事情的最佳方式是什么?

感谢您提前提供任何帮助。

4

2 回答 2

6

你需要使用MVC吗?不。假设你已经有了一个适合你的结构,如果它没有坏,就不要修复它。如果您正在开始一个新项目,我建议您使用 MVC,但我不会为了它而重构一大堆代码。如果您确实使用了 MVC,您将遵循类似的方法。您将有一个基本视图类,您可以在其中动态推送子类中的项目。您将有一个基本控制器来处理所有自定义事件,然后是子类控制器以在“每个模块”的基础上实现自定义功能。

于 2013-03-19T20:35:56.713 回答
4

很难向没有使用 MVC 经验的人解释使用 MVC 的优势。作为同时使用 ExtJs 3 和 4(使用 MVC)开发的人,我认为 MVC 的最大优势之一是它迫使您正确思考 - 无论您是否愿意,使用 MVC 都可能导致代码库更可重用和更好的封装。但是,如果你们男孩和女孩是优秀的程序员/设计师,无论如何都会如此。

如果您确实选择迁移到 MVC,我相信主要变化将在于,现在您将不再处理自定义类中的用户交互,而是使用一个控制器来完成相同的工作 - 让您的自定义类来实现视图只要。ExtJs4 中的控制器是全局的——这意味着同一个控制器可以控制 40 个相似的视图。所以这里没有重复的控制器。

值得一提的是,即使在 MVC 设计中,您也会发现非 MVC 代码。例如,我有一个自定义记录编辑器,它是一个表单——该组件知道如何处理用户操作并相应地更新记录(该表单未提交,因为它主要处理关联)。该组件在 MVC 设计中扮演控制器和视图的等效角色。在我看来,以这种方式封装事物是非常合理的,而不是将其拆分为视图和控制器。但是(不可重用的)用户屏幕是使用 MVC 实现的。所以也许只是另一个不急于使用 MVC 的理由。

虽然我同意 Evan 的观点,如果它没有坏就不要修复它,如果我是你的开发负责人并且给定时间和金钱不是问题,我实际上会要求逐步迁移到 MVC - 总的来说,我认为 3 年后线你不会后悔这个决定。我至少会尝试一下。

当 ExtJs 4 出现时,我花了 2 个月的时间从头开始使用 MVC 重写一个系统——我现在一点也不后悔(我一开始就这样做了,但不是为了 MVC——而是因为4) 的早期版本。

于 2013-03-19T22:19:33.967 回答