2

据我了解,MVC 是一种实现表示层与业务层和数据层分离的方法。我是否正确理解这一点?如果是这样,MVC 应该将业务逻辑与表示完全分离,对吗?

所以在我看来,javascript(或 jquery)似乎在某种程度上违反了 MVC 设计,因为它接管了客户端的一些逻辑,不是吗?模型 = 数据层,控制器 = 业务层,视图 = 表示层?我想我误解了整个概念。

4

4 回答 4

2

您似乎对 MVC 有很好的理解。问题在于您将两种不同的潜在 MVC 结构视为一个且相同的结构。在服务器上,您可以拥有数据模型、控制器和视图。在客户端,您还可以拥有数据模型、控制器和视图。如果您想将客户端 JavaScript 视为 MVC,那么 jQuery 只是一个实用程序,视图控制器可以使用它来操作视图(DOM)。

简单地说,客户端并不总是只有视图。例如,如果您使用像 Backbone 这样的 Web 应用程序客户端框架,那么您可以在客户端拥有模型、视图和控制器,它们与服务器上的另一个单独的 MVC 结构进行通信。

于 2013-04-24T19:28:43.650 回答
1

您所描述的确实对许多实现构成了挑战。诸如 ASP.NET MVC 框架之类的框架一直在尝试根据中间层的业务逻辑(主要是表单字段的验证规则)将 JavaScript 自动呈现到 UI。但它们距离真正引人入胜的不重复逻辑的 JavaScript 用户体验还有很长的路要走。

就个人而言,我喜欢将 JavaScript 视为纯粹的 UI 问题。应用程序在内部处理所有逻辑。作为 UI 的一部分,JavaScript 可能会复制其中的一些逻辑……但仅用于严格的 UI 目的。请记住,如果用户禁用了 JavaScript,应用程序应该优雅地退回到仍在工作的状态。也就是说,它仍然应该使用服务器端(中间层)代码来完成工作。JavaScript 所做的只是为 UI 层添加了更丰富的用户体验。

JavaScript 也不是唯一的罪魁祸首。假设您在中间层中有很多验证逻辑来​​定义对象的有效或无效。当您将这些对象保存到数据库(就像 UI 一样位于应用程序的外围)时,该数据库不也包含重复的验证逻辑吗?不可为空的字段等。

于 2013-04-24T19:29:41.360 回答
0

您可以访问http://www.asp.net/mvc站点并参考教程/示例以了解使用 Microsoft 技术的 MVC。

于 2013-08-23T16:28:41.453 回答
0

恭喜!你对MVC的理解是完全错误的。它与 n 层架构无关(您似乎对此感到困惑)。

MVC 的核心思想是关注点分离。这是通过将应用程序分为两个主要层来使用的:

  • 模型层:包含所有领域的业务逻辑和规则。
  • 表示层:处理用户界面

然后演示进一步分为控制器(用于处理用户输入)和视图(用于处理响应)。

当应用于 Web 应用程序时,您要么仅在服务器端使用 MVC(或类似 MVC)结构,要么对于更大、更复杂的应用程序,前端和后端都有单独的 MVC 三元组。

此外,在使用应用程序时,MVC 的用户不是人类,而是浏览器。

在后一种情况下,后端就像前端应用程序的一个数据源。MVC 的整个前端部分都是用 javascript 编写的。

PS如果您能够阅读 PHP 代码,您可以在此答案中找到模型层的非常简单的解释。是的。它是“简单版本”,因为 MVC 是一种用于在大型应用程序中强制执行结构的模式,而不是用于制作留言簿。

于 2013-04-24T19:42:25.270 回答