MVC架构:修订间差异

来自牛奶河Wiki
跳到导航 跳到搜索
无编辑摘要
无编辑摘要
 
第1行: 第1行:
[[文件:Mvc框架.png|右|无框]]
经典MVC模式中,M是指模型,V是视图,C则是控制器。
经典MVC模式中,M是指模型,V是视图,C则是控制器。


第11行: 第12行:
=== 控制器 ===
=== 控制器 ===
C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
== MTV架构 ==
[[文件:Mtv框架.png|右|无框]]
Django 借鉴了经典的 MVC 模式,它也将交互的过程分为了 3 个层次,也就是
=== MTV 设计模式 ===
* Model:数据存储层,处理所有数据相关的业务,和数据库进行交互,并提供数据的增删改查
* Template:模板层(也叫表现层)具体来处理页面的显示;
* View:业务逻辑层,处理具体的业务逻辑,它的作用是连通Model 层和 Template
=== 请求与响应 ===
* 用户通过浏览器对服务器发起 request 请求,服务器接收请求后,通过 View 的业务逻辑层进行分析,同时向 Model 层和 Template 层发送指令;
* Mole 层与数据库进行交互,将数据返回给 View 层;
* Template 层接收到指令后,调用相应的模板,并返回给 View 层;
* View 层接收到模板与数据后,首先对模板进行渲染(即将相应的数据赋值给模板),然后组织成响应格式返回给浏览器,浏览器进行解析后并最终呈现给用户。
通过以上两种设计模式的比较, 我们可以得出 MTV 是 MVC 的一种细化,将原来 MVC 中的 V 层拿出来进行分离,视图的显示与如何显示交给 Template 层,而 View 层更专注于实现业务逻辑。其实在 Django 是有 Controller 层的,只不过它由框架本身来实现,所以我们不用关心它。Django 更关注于M、T 和 V。
[[分类:Develop]]
[[分类:Develop]]
[[分类:Web]]
[[分类:Web]]

2023年2月6日 (一) 12:37的最新版本

Mvc框架.png

经典MVC模式中,M是指模型,V是视图,C则是控制器。

使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就是用户界面。

模型

M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

视图

V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操作的方式。

控制器

C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

MTV架构

Mtv框架.png

Django 借鉴了经典的 MVC 模式,它也将交互的过程分为了 3 个层次,也就是

MTV 设计模式

  • Model:数据存储层,处理所有数据相关的业务,和数据库进行交互,并提供数据的增删改查
  • Template:模板层(也叫表现层)具体来处理页面的显示;
  • View:业务逻辑层,处理具体的业务逻辑,它的作用是连通Model 层和 Template

请求与响应

  • 用户通过浏览器对服务器发起 request 请求,服务器接收请求后,通过 View 的业务逻辑层进行分析,同时向 Model 层和 Template 层发送指令;
  • Mole 层与数据库进行交互,将数据返回给 View 层;
  • Template 层接收到指令后,调用相应的模板,并返回给 View 层;
  • View 层接收到模板与数据后,首先对模板进行渲染(即将相应的数据赋值给模板),然后组织成响应格式返回给浏览器,浏览器进行解析后并最终呈现给用户。

通过以上两种设计模式的比较, 我们可以得出 MTV 是 MVC 的一种细化,将原来 MVC 中的 V 层拿出来进行分离,视图的显示与如何显示交给 Template 层,而 View 层更专注于实现业务逻辑。其实在 Django 是有 Controller 层的,只不过它由框架本身来实现,所以我们不用关心它。Django 更关注于M、T 和 V。