2012-07-30 54 views
0

MVC代表模型,视图和控制器。 Backbonejs.or通过与Rails进行比较来解释这一点,更多here及以下。因为我不知道Rails,所以比较是没有意义的。下面的exctract突出了控制器,也许是一个不严格的MVC的原因 - 不知道它推断什么。这是什么意思,骨干不是一个严格的MVC?说明“骨干不是严格的MVC”

摘自Backbonejs.org网站(来源here)。

如何骨干涉及到 “传统” MVC?

模型 - 视图 - 控制器模式的不同 实现倾向于不一致 约控制器的定义。 如果它在Backbone中有帮助,那么View类也可以被认为是一种控制器, 调度源自UI的事件,其中HTML模板 充当真实视图。我们称之为视图,因为它代表了一个逻辑块UI,负责单个DOM元素的内容。

骨干的整体结构比较像Rails的服务器端MVC框架 ,件排队,像这样:

  • Backbone.Model - 就像一个Rails模型减去类的方法。在业务逻辑中包装一行数据。
  • Backbone.Collection - 客户端的一组模型,具有排序/过滤/聚合逻辑。
  • Backbone.Router - Rails routes.rb + Rails控制器操作。将网址映射到功能。
  • Backbone.View - 一个逻辑的,可重用的用户界面。通常但并非总是与模型相关联。
  • 客户端模板 - Rails .html.erb视图,呈现一大块HTML。

我添加了斜体以突出显示为什么它显然不是MVC。上面我可以找到模型和视图 - 术语 - 但术语controller被明确地省略,而不是使用术语路由器,集合和模板。为什么路由器/集合/模板不是控制器?

我发现这个控制器 - 定义controller mediates input, converting it to commands for the model or view(Wikipeadia here),有点模糊。

+0

关于MVC的非常流行的线程[这里](http://stackoverflow.com/questions/5863870/how-should-a-model-be-structured-in-mvc/5864000#5864000)。 – hhh 2012-07-31 09:18:45

回答

2

非常有趣的陈述,特别是因为Rails距实现MVC灵感的设计模式还很遥远。实际上,我会说,BackboneJS的解释更接近MVC的想法。

视图不应该只是一个愚蠢的模板。它应该负责所有的表示逻辑(并且,在经典的MVC,Model2 MVC和HMVC模式的情况下,它是一个活动结构)。

Rails框架实现的内容可以更好地描述为“ORM,模板,适配器”反模式,其中业务逻辑和表示逻辑都被迫进入他们称之为“控制器”的地方。

BackboneJS实现的内容实际上更接近于MVVM设计模式,其中viewmodel提供了带有信息的被动视图。然后查看决定如何处理它以及使用哪些模板。

0

据我所知,传统的MVC模式具有以下要素:

模型 - 仅保持数据(也许一些数据处理方法)

视图 - 呈现显示出的部分的视觉和互动元素将数据发送给用户。

控制器 - 处理模型和视图之间以及用户和代码之间的交互(例如,当模型更新,重新呈现视图,当用户单击按钮时,更改模型中的数据)。

在Backbone中,没有明确的控制器。相反,这个控制功能是通过以下方式执行的:a)视图本身(例如,设置事件监听器以更新用户动作模型) b)处理要显示哪些视图的路由器和c)索引文件或其他HTML/JS码。

+0

你真的不明白,模型层的责任是什么。或者控制器应该做什么。 – 2012-07-31 01:07:25

+0

我很困惑 - 你的意思是这样[这里](http://i.stack.imgur.com/brjhk.png)从线程[here](http://stackoverflow.com/questions/5863870/如何-应该-A-模型进行结构式-MVC/5864000#5864000)。 MVC最初是为GUI设计的:'“MVC最初是为了将传统的输入,处理,输出角色映射到GUI领域而开发的:”'(源后者线程)? – hhh 2012-07-31 09:48:00