Model view controller 在模型-视图-控制器原理中,什么是前端,什么是后端?

Model view controller 在模型-视图-控制器原理中,什么是前端,什么是后端?,model-view-controller,Model View Controller,维基百科说: MVC为数据库、用户和应用程序提供前端和后端 数据处理组件。将软件系统分离为 前端和后端简化了开发并分离了维护 我仍然看不到模型-视图-控制器原理与前端和后端概念之间的联系。是否可以将访问数据库的模型视为后端,将视图视为前端 前端是用户看到的视图。后端是控制器和模型。 视图=前端 型号=后端 控制器=前端和后端之间的粘合 在这种情况下,后端通常意味着更深层次的操作系统代码,甚至是用户看不到/控制不到的代码 前端是用户看到的实际视图。确定。。首先是条款: 前端是用户可见的部分:HT

维基百科说:

MVC为数据库、用户和应用程序提供前端和后端 数据处理组件。将软件系统分离为 前端和后端简化了开发并分离了维护


我仍然看不到模型-视图-控制器原理与前端和后端概念之间的联系。是否可以将访问数据库的模型视为后端,将视图视为前端

前端是用户看到的视图。后端是控制器和模型。

  • 视图=前端
  • 型号=后端
  • 控制器=前端和后端之间的粘合

在这种情况下,后端通常意味着更深层次的操作系统代码,甚至是用户看不到/控制不到的代码

前端是用户看到的实际视图。

确定。。首先是条款:

  • 前端是用户可见的部分:HTML、CSS、客户端Javascript。这一切基本上都是“前端”。在桌面应用程序中,前端将是GUI
  • 后端是不可见的部分。在web应用程序中,它是java、ruby、php或任何其他服务器端代码。它既可以被解释也可以被编译,因为“如何”工作对“是什么”没有影响
如果您阅读并研究了MVC模式,您就会明白,MVC不是关于后端和前端的分离。特别是当涉及到我们用于web应用程序的

MVC和相关模式的目标是将表示与领域业务逻辑分离

以下是MVC零件的基本职责:

  • 模型-业务逻辑
  • 视图-表示逻辑
  • 控制器-更改模型和视图的状态(基于用户输入)
让我们举一个例子:

  • twitter的替代客户端应用程序
  • 使用OAuth进行身份验证
  • 用户可以输入不同的搜索短语
  • 通过Twitter的RESTAPI获取信息
  • 验证数据
  • 解析JSON响应
  • 操纵DOM以显示信息
这一切都可以通过客户端JavaScript完成您可以让MVC triad运行“前端”同时,提供RESTAPI的“后端”是一种类似MVC的结构。只有这一次,视图才生成JSON响应,而不是HTML响应

*结论:您可以在后端和前端使用MVC模式**

后脚本 由于您一直在使用Rails构建一些应用程序,因此您对MVC的理解可能有点模糊,但有些扭曲。我之所以这么说,是因为RoR最初是作为一个原型框架制作的(请注意用于生成一次性代码的所有脚手架和其他特性),而且由于它的起源,Rails实际上实现了一个非常贫乏的MVP版本

我称之为“贫血”,因为它们削弱了视图(在MVP中它应该是一个被动对象,而不是一个简单的模板)和模型层(是的,它应该是一个复杂的层,而不是ORM实例的集合)

我建议您阅读两种出版物,以便更好地掌握这一主题:

  • 。。严肃的开发者必读

第二个是尽可能接近模式的初始定义。这一点,再加上“GUI架构”一文,应该为您提供了一个坚实的基础。PoEAA的书(硬读,顺便说一句)将为您提供展开它的上下文。

也许下图会有所帮助

MVC               Human language    backend/frontend
---------------   ---------------   ---------------
model          -> data           -> backend
controllers    -> actions        -> backend/frontend (depends on implementation)
views          -> GUI            -> frontend

太好了,这是一个非常有用的答案!谢谢你的链接,这有助于我加深理解。这就是重点,我开始使用Rails构建应用程序,并继续使用Rails作为后端构建iOS设备的应用程序。因此,我试图了解Rails应用程序在iOS-App的模型-视图-控制器模式中的位置。答案不错,但模型与业务逻辑无关。这只是数据。业务逻辑意味着模型执行的操作并非如此。@Pithikos模型是一个层。您所说的是活动记录实例。这些不是“模型”。它们只是DB表的抽象。这并不能解释控制器所在的位置。