backbone.js被称为Javascript的MVC框架。但是吗?
以下是来自http://documentcloud.github.com/backbone/
的模型说明模型是任何JavaScript应用程序的核心,包含交互式数据以及围绕它的大部分逻辑: 转换,验证,计算属性和访问控制。您 使用特定于域的方法和Model扩展Backbone.Model 提供了一组用于管理变更的基本功能。
现在,根本不是我对MVC模型的理解。根据我的理解,模型只是模拟域的类,因此您的学生,学校和教师对象。控制器确实对它们执行业务逻辑并与视图交互以显示和接收输入。
这种理解与我在网络上发现的各种定义一致,IE http://en.wikipedia.org/wiki/Model_view_controller:
模型 - 视图 - 控制器(MVC)是计算机用户的设计模式 将应用程序划分为三个区域的接口 责任:
模型:域对象或数据结构 表示应用程序的状态。
所以,我的问题是:在任何意义上,backbone.js真的是一个MVC框架,还是更像是帮助你把所有东西粘在一起的一般方法?
顺便提一下,来自backbone.js常见问题解答的模型定义似乎与我上面引用的模型不同(也来自backbone.js http://documentcloud.github.com/backbone/#FAQ-mvc:
Backbone.Model - 就像Rails模型减去类方法一样。在业务逻辑中包装一行数据。
那么在什么意义上,backbone.js真的是一个MVC?
(警告:我目前只评估backbone.js。)
答案 0 :(得分:19)
Backbone是MV *(MV-star)之一。有无控制器,因为操作应用程序的逻辑在视图中(类似于M(V + C))。
" Model"没有统一的定义。因为它在不同语言的不同框架中使用不同。但通常,模型只是数据存储的抽象,并且可选地具有一些逻辑,如验证,格式化和状态更改挂钩。
答案 1 :(得分:11)
当你试图找到“ M ”(模型)“ V 时,它有点令人困惑 “(查看)和” C “(控制器)。
通过这种方式,我们总能在条款上争论,但重要的是打算。
将“条款”与“意图”相交:
“M”:
Backbone 模型。 收藏集与模型相关联。
“V”:
默认的 Underscore.js 模板代表标准 MVC
的“查看意图”“C”:
Backbone 查看是控制器。它在骨干中称为查看(与许多其他像 Django 一样),因为它处理渲染。从 MVC 的角度来看它是一个Controller。 路线与视图
相关联现在,有时只是为了满足 MVC 缩写,有人称之为“模型视图集合”。但这不应该说。
答案 2 :(得分:2)
我认为你的名字已经挂了。并非每个MVC框架都遵循相同的命名约定。例如,在Django中,控制器称为视图,视图称为模板。 Backbone遵循类似的命名模式。注意,Backbone在视图部分非常灵活,不强制执行任何特定的模板库。
如前所述,Backbone模型中包含的逻辑是模型所关注的逻辑。标准关系数据库是模型(表)的集合,通常关注列中的数据类型。
通常会出现在控制器中的逻辑(Backbone的“视图”)会像处理瞬态会话数据,检查用户状态(例如,通过身份验证,虽然您不会在js中执行此操作),绑定视图到模型(Backbone就是这样做的,管理基于用户操作和绑定模板存储/创建模型的位置和时间,以更新模型更改)。
总而言之,Backbone实际上非常适合MVC,比大多数服务器端“MVC”框架要好得多,后者通常是真正的“PAC”框架(Presentation-Abstraction-Control)。答案 3 :(得分:2)
两者都有。如果你正在看严格意义上的模型;也就是说,模型只是数据,然后是数据。但是验证,转换等都已经放在那里,因为Backbone相当以模型为中心。根据我自己的经验,我通常会对传统意义上的Backbone模型进行处理,因为模型是应用程序对后端数据存储的表示,并且它只是操作该数据的访问器方法。
重点是虽然存在验证或执行访问控制等功能,但您可以选择遵循更经典的MVC模式。这完全取决于你。我对Backbone的喜爱之处在于它为您提供了一个MVC引擎,您可以在其上构建整个应用程序架构。如果你想要遵循经典的MVC设计模式,你当然可以做到这一点。干杯!
答案 4 :(得分:1)
在backbone.JS MVC 代表模型视图集合 ......
答案 5 :(得分:1)
如果你在Backbone.js中寻找控制器,你可能想看看这个:http://chance-an.github.com/backbone-mvc/