6

我对 Web 开发和 MVC 架构的世界非常陌生。我目前正在研究 django,我认为它是一个 MVC 框架。如果我是对的,对于 Web 应用程序,MVC 意味着

视图是前端模型是后端控制器是前端和后端之间的粘合剂

好吧,如果上述情况属实,并且视图是唯一的前端部分,那么诸如骨干,角度之类的前端框架的功能到底是什么?他们究竟是如何部署 mvc 概念的?另外,在构建一个简单的博客站点时,哪个框架更可取?还有在前端和后端 mvc 框架上工作的网站实例吗?请举例。为了澄清,我经历了这个问题:在模型-视图-控制器原理中,什么是前端,什么是后端?但无法完全理解。谢谢你

4

3 回答 3

11

前端和后端与 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 框架开发客户端应用程序.

于 2013-08-02T20:12:28.447 回答
0

Django 是模型-视图-控制器模型的一种混合版本。Django 文档通常将其描述为 Model-View-Template 模型。一般模板(带有模板标签的Django HTML等)一般都匹配普通的View,以网页的方式提供用户的视图。Django 中的视图通常代替控制器,因为它在模型(从数据库中获取数据并定义新对象)和视图(在本例中为模板)之间工作。Model 与 Django 中的普通模型相同,为不同的对象提供定义。因此,虽然 Model-View-Controller 通常是大多数语言的模型,但它更像是 Model-View-Template 模型,View 与正常情况不同。在下面阅读更多内容:

http://jeffcroft.com/blog/2007/jan/11/django-and-mtv/

于 2013-08-02T21:01:28.527 回答
0

我正在研究 Django 和 Web 开发模式。

我目前(2014-01)喜欢的是。

使用 Django (restful/json) 作为 MC、模型/控制器或支持的数据和逻辑。Django 中的控制器部分指的是业务规则和访问控制。

然后使用 javascript 框架和一些 html 作为客户端代码。视图/控制器。

在实践中,客户端/浏览器加载一个 javascript 程序,视图/控制器,然后对支持的模型/控制器进行安静的查询

于 2014-01-03T09:09:24.113 回答