我正在尝试学习网络开发。
我(大部分)理解MVC的概念,但我很担心为什么在服务器端使用MVC模型......就像Spring MVC一样。服务器端不是模型和服务,然后是客户端服务,视图和控制器(AngularJS甚至在客户端显式显示该模式)?
我真的很挣扎MVC模型如何适应或促进服务器端开发。
答案 0 :(得分:5)
MVC是一种模式,不仅仅是Web应用程序。任何具有UI的应用都可以使用MVC模式。
这个想法是你有一个View(html,或者你的操作系统中的一个窗口,甚至一个报告或者其他东西),你有一个代表该视图动态部分的模型。然后你有一个控制器专门处理输入并执行“业务逻辑”来生成模型并将其应用到视图。
所以..例如在服务器上你可能有这个MVC模式:
在客户端上它会类似(但在Angular的情况下有点不同):
清除泥土?
不用担心。只要知道这一点:这只是一种常见的模式。它不是“特定于服务器”或“特定于客户端”。任何需要将数据清理成模板化输出的内容都可以在任何地方使用它。
编辑:更多想法。
对于在服务器上提供JSON(甚至XML)的Web API,在大多数情况下,您仍然使用MVC。这是因为你正在做的是:
答案 1 :(得分:4)
在昔日的好日子里,客户端只是一个展示。服务器负责与模型通信,应用业务逻辑,生成视图以及将静态呈现内容发送回客户端(浏览器)。
随着网络的成熟,其中一些职责从服务器迁移到客户端。现在,服务器端通常是一个像RESTful API这样的薄层,它存储“官方”业务逻辑(而不是客户端上的便利逻辑)并存储模型。但是对于性能和用户体验,客户端现在将模型的副本存储在其自己的模型层中,根据需要与服务器和/或本地存储进行通信,并拥有自己的控制器和视图逻辑以提供令人敬畏的用户体验。 / p>
MVC仍然适用于服务器吗?是!这是不同的。服务器通常生成客户端应用程序运行的初始视图(例如,考虑本地化或国际化),并且仍然包含官方模型。但更重要的是,MVC中的“视图”刚刚改变。而不是服务器端视图是HTML,它现在是客户端应用程序使用的JSON或XML,而不仅仅是呈现。
因此,为了功能,我们仍在服务器上使用MVC。但是为了获得令人敬畏的用户体验,我们现在也在客户端使用MVC。