Web开发

注册

 

发新话题 回复该主题

MVC体系结构简介Web开发人员的观点 [复制链接]

1#

MVC或模型视图控制器

MVC代表模型-视图-控制器及其软件体系结构设计模式。此体系结构的主要目标是分离应用程序的功能、逻辑和接口,以促进有组织的编程。它还允许多个开发人员在同一个项目上工作。

让我们从Web开发人员的角度来看MVC的不同组件。让我们来看看一些流行的使用MVC的Web框架。

RubyonRails(Ruby)、Express(JS)、Backbone(JS)、Angular(JS)、Laravel(PHP)、Zend(PHP)、Codeigniter(PHP)、Django(Python)、Flask(Python)

让我们谈谈RubyonRails和CodeIgnitor(PHP)。这些框架的文件结构中实际上有文件夹,称为模型、视图和控制器。类似DjangoforPython的东西只是借用了某些概念,但实际上没有严格的文件夹结构。

另一件可能发生的事情是,一个框架将把应用程序的一个方面放在控制器中,然后另一个方面放在模型中,所以我认为这就是为什么MVC如此令人困惑的原因,因为不止一种方法可以做到这一点——实际上有很多很多种方法可以创建MVC结构。

现在,我们将进入MVC的三个组件:模型、视图和控制器。

模型

模型负责获取和操作数据,因此它基本上是应用程序的大脑。通常,它与某种数据库交互。这可以是关系数据库(如MySQL),也可以是NoSQL数据库(如MongoDB)。这真的不重要,在许多支持多个数据库的框架中,模型代码将保持完全相同。

需要更改的只是数据库驱动程序,它甚至不必是与之配合使用的数据库。它可能是一个简单的文件。因此,您可以让您的模型与JSON文件交互并从中提取数据。

它负责诸如选择、插入、更新和删除之类的查询,并且模型还与控制器通信。在大多数情况下,控制器可以通过模型请求数据,并且在大多数情况下,控制器更新视图;但是,对于某些框架,模型实际上可以直接更新视图。这是使MVC变得复杂的另一个例子。

所以,只要认识到有不同的实现,它们可以在不同的框架之间采取不同的行动。

看法

接下来,我们有了这个视图,你大概可以猜到它在考虑什么。这是应用程序的实际视图,因此是用户界面,是用户看到的内容以及他们如何与应用程序交互。

因此,视图通常由HTML和CSS以及来自控制器的动态值组成。因此,控制器与视图以及模型进行通信。现在,根据您使用的框架,模板引擎可能会有所不同。

模板引擎允许动态数据。如果我们有直接的HTML,我们就不能输出变量,不能使用逻辑,不能选择If语句等等,但是,通过模板引擎,我们可以在视图中或模板中完成这些工作。

因此,模板引擎的一些示例是handlebar.js和Dust.js。然后,对于RubyonRails,我们有ERB,它是嵌入式的。对于Ruby,您还可以使用Haml,然后使用Python,您就有了一个烧瓶。它们有很多,有些做的比其他的多,但是你有很多选择,特别是JavaScript。

控制器

最后,我们有控制器,控制器接收用户输入,这可能来自用户访问页面或单击链接发出get请求或提交表单发出post请求,我们还有删除请求或put更新请求。这些不能直接从浏览器中创建,只能执行get或post,但我们确实有HTTP客户端,它们有时内置在框架中,可以实现这一点。

现在,控制器充当模型和视图之间的中间人。控制器将要求模型从数据库中获取一些数据,然后控制器将获取该数据并加载一个视图并将该数据传递给它。然后,模板引擎从那里接管,基本上可以做一些逻辑、输出变量之类的事情。

控制器也可以加载视图而不传递数据,因此只需一个带有HTML和CSS的普通网页,而不需要实际的模板逻辑。

现在我们有了用户,用户可以在浏览器中看到应用程序的视图,应用程序可以通过输入到所谓的路由器发出某种请求。他们的请求可能是他们点击某种路线的某种链接。

然后路由器将基于该路由调用特定的控制器方法,如果需要数据或需要获取一些数据,控制器将与模型交互,模型将与数据库交互。然后,一旦控制器将数据传回,它就可以加载一个视图,并将数据发送到该视图,然后由模板引擎处理。

完成后,它会将视图发送回浏览器供用户查看。

结论

我们可以理解MVC架构模式,因为模型是数据,控制器是一种交通控制器,视图是用户所看到并与之交互的。希望你们喜欢这个。

分享 转发
TOP
发新话题 回复该主题