前端和后端与 MVC 模型没有一对一的类比。例如,(Django)站点的管理员通常被认为是后端的一部分——它不是用户将看到的站点的一部分——但管理员的一部分绝对是 MVC 模型的视图部分。普通网络用户看到和/或直接与之交互的任何东西都是前端的一部分,其他一切都是后端的一部分。
现在 Django 中使用的 MVC 框架是什么?我们有:
- 模型:这是应用程序中保存应用程序状态的部分。在 Django 中,其中很大一部分是数据库及其抽象层,即 Django 模型。其他部分是用户会话和
request
变量。
- 视图:这是应用程序向用户呈现应用程序状态的部分。Django 视图和模板对此负责。打开网站时看到的任何数据都是 MVC 的视图部分。整体呈现也是其中的一部分。
- 控制器:这是应用程序的一部分,代表您(用户)采取的任何操作。Django 并不是真正独立的 MVC 框架,因为视图部分和控制器部分是如此紧密地交织在一起:您在网站上看到的任何链接、表单或按钮都是控制器。它告诉站点做一个动作,比如呈现一个不同的视图(例如一个链接),或者改变模型的状态(例如一个编辑表单)。
Backbone 或 Angular 呢?为什么在一个应用程序中需要两个不同的 MVC 框架?
Django 是一个服务器端框架。每个动作都发生在服务器上。如果您单击链接或提交表单,您会向服务器发送请求,服务器会发回完整的静态响应(静态的意思是页面在您的浏览器中不会更改)。您不能使用 Django 来使用逻辑客户端,因为它是一个在您的服务器上运行的 Python 框架,而不是在您的客户端浏览器中。相反,添加任何客户端逻辑是 Javascript 的工作,例如重新排序页面上的项目列表或动态添加新项目。现在每个页面都可以看作是某种迷你应用程序。
Backbone 和 Angular 是此类客户端应用程序的 MVC 框架示例。它提供了 Django 等服务器端框架所缺乏的客户端应用程序逻辑,令人惊讶的是,喜欢 MVC 框架开发服务器端应用程序的人通常也喜欢使用 MVC 框架开发客户端应用程序.