当前位置: 首页 > 科技观察

从Web开发者的视角来解读MVC架构

时间:2023-03-18 18:48:54 科技观察

从Web开发人员的角度解读MVC架构该框架的主要功能是通过允许多个开发人员在一个项目上一起工作以分离应用程序的功能、逻辑和界面,从而促进一种有组织的编程方法。接下来,让我们从Web开发者的角度来解读一下MVC的不同组件。首先,让我们来看看一些流行的使用MVC的Web框架:RubyonRails(Ruby)Express(JS)Backbone(JS)Angular(JS)Laravel(PHP)Zend(PHP)Codeigniter(PHP)Django(Python))Flask(Python)接下来,我们关注RubyonRails和Codeigniter(PHP)。这两个框架在其文件结构中有不同的文件夹,分别称为模型、视图和控制器。虽然相似并借鉴了DjangoforPython的一些概念,但这两个框架实际上并没有严格的文件夹结构。这种框架的另一个特点是:同一个框架可能将其应用程序放在控制器中,而另一部分放在模型中。因此,很多Web开发者认为MVC架构有点混乱,甚至没有固定的规则可循。但我个人认为用户可以通过多种方式创建MVC架构,这也是它的亮点和灵活性所在。下面,我们从Web开发者的角度,正式解释一下MVC的三个组件:模型、视图和控制器。模型由于模型组件负责获取和操作数据,因此它通常是应用程序的“大脑”。通常,它与关系数据库(如MySQL)和NoSQL数据库(如MongoDB)进行交互。但这并不重要,模型的代码在支持多数据库的不同框架中可以始终保持不变。在实际应用中,我们只需要修改数据库的驱动程序,而不必知道它所配合的数据库类型。例如:您可以让自己的模型与JSON文件交互并从中提取数据。这个简单的JSON文件甚至不是数据库。模型不仅负责SELECT、INSERT、UPDATE、DELETE等查询操作,还负责与控制器进行通信。在大多数情况下,控制器可以通过模型请求数据,而更新视图则取决于控制器。但是,通过一些框架,模型也可以直接更新视图。当然,这显然增加了MVC的复杂度。可见,不同的框架有着完全不同的实现方式。View就视图而言,顾名思义,它与应用程序的实际视图有关,也就是我们常说的用户界面。它负责面向用户的显示以及用户如何与应用程序交互。因此,一个视图通常包括:HTML、CSS,以及来自控制器的各种动态值。当应用程序运行时,控制器与视图和模型进行通信。此外,具体的模板引擎可能会因您选择的框架而异。这里的“模板引擎”是指:允许动态数据的工具。如果我们直接使用HTML,将没有输出变量,也没有像if语句这样的逻辑选项。但是如果使用模板引擎,那么我们就可以在视图中或者在模板中正确地处理这样的动态变量。因此,模板引擎的典型示例包括:Handlebars.js(https://handlebarsjs.com/)和Dust.js(https://www.dustjs.com/)。对于RubyonRails,我们可以使用嵌入式ERB(https://ruby-doc.org/stdlib/libdoc/erb/rdoc/ERB.html)。对于Ruby语言,我们还可以使用Haml(http://haml.info/)和FlaskforPython(http://flask.pocoo.org/)。当然,我们还有其他选择,比如JavaScript。controller***是一个controller,它关心的是用户的输入。例如:当用户在访问页面时点击链接,触发GET请求;或者以提交表单的形式发送POST请求;当然,我们也可以发送删除或更新请求。由于这些动作不能直接从浏览器生成,只能自己生成GET或POST,或者使用框架内置的HTTP客户端来达到这个目的。在这里,控制器充当模型和视图之间的中间人。控制器需要通过模型从数据库中获取一些数据,控制器获取到相关数据后,通过加载视图的方式将数据传递给它。然后,模板引擎接管后续的“任务”,实现输出变量等逻辑事务。当然,控制器也可以在不传递数据的情况下加载视图。而这里需要的是纯HTML和CSS的网页,不是真正的模板逻辑。下面是一个非常简单的例子(或流程图)。如上图所示,用户可以通过浏览器看到应用的视图。首先,应用程序可以将它们的输入作为某种请求提交给所谓的“路由器”。而且,这些请求正是用户点击某个链接而产生并触发的某个路径需求。“路由器”然后开始根据该路由调用特定的控制器方法。所以,如果你需要使用或者获取一些数据,控制器需要和模型进行交互,而模型也会在后台和数据库进行交互。然后,一旦控制器有了返回数据,它就需要加载一个视图。具体操作过程是:它向视图发送数据,由模板引擎处理。***,一旦后台运行完成,controller会将view发回给浏览器供用户查看。结论综上所述,我们可以这样理解MVC架构:模型是某种数据结构,控制器是流控制器的一种形式,视图是用户看到并与之交互的部分。每个人各司其职,使节目分工明确,井井有条。原标题:AnIntroductiontoMVCArchitecture:AWebDeveloper'sPointofView,作者:DipenPatel