控制器在Backbone.js
我是Backbone.js的新手。 我已经通过了文档。 我的问题是控制器概念在哪里出现? 换句话说,Backbone.js中的控制器是什么?
我听说路由器是控制器。 如果是这样,为什么它被认为是一个控制器? 我们可以在没有路由器的情况下开发简单的基本应用吗 在那种情况下,控制器是什么?
在这里澄清一些事情。 路由器不是控制器,这是一种定义客户端路由映射(类似于Rails的routes.rb)的方法。 这有助于将客户端页面路由到特定的操作/处理程序。 这与控制器在模型和视图之间提供一点编排的工作不同。 实际上有多种方法可以使用Backbone来实现这一点。 从Backbone的文档引用:
模型和视图之间的引用可以通过几种方式处理。 有些人喜欢有直接指针,其中视图与模型(model.view和view.model)1:1相对应。 其他人更喜欢拥有中间的“控制器”对象,将视图的创build和组织成一个层次结构。 还有一些人更喜欢这种方法,而且总是直接引发事件而不是直接调用方法。 所有这些风格运作良好。
这带来了三种不同的方法来实现这一点。 第一个非常简单,就是将模型对象作为属性包含在视图中。
第二个build议包括执行这种编排作用的第三个组件。 我相信这可以在相当大和复杂的应用程序中有所帮助。 为此,我build议您查看一下使用Backbone.js的示例应用程序体系结构Chaplin 。 这些家伙在分离事物方面做了很多工作,并且将控制器的概念引入到了架构中。
最后一种方法是build议使用事件来标记动作和调解器来处理这些动作。 为此,我鼓励您查看调解器和发布/订阅JavaScript模式。
查看Addy Osmani在客户端MV *上的文章:
http://addyosmani.com/blog/understanding-mvc-and-mvp-for-javascript-and-backbone-developers/
从文章:
在Backbone中,与Backbone.View和Backbone.Router两者共享控制器的职责。
和
在这方面,与官方文档或博客文章中提到的相反,Backbone既不是真正的MVC / MVP也不是MVVM框架。
这与iOS Cocoa Touch框架的工作原理更为相似,您不应该将其视为后端MVC,骨干团队本身甚至从未在其网站上提及MVC,以避免人们从后端MVC来的混淆。 在骨干View是一个ViewController / AppController,通常你的主AppController将是一个视图,它为你的应用程序设置了主包装器,通常你也可以用它作为你的主应用程序逻辑的全局pub / sub系统和控制器。
路由器正是它所说的 – 它将路由转换成一组params,并将它们传递给应用控制器,以找出如何处理它们,加载哪些子视图等(或者,如果应用程序不太复杂,它可以加载/更改视图直接从路由器级别) – 它曾经被称为控制器,但它被重新命名(0.5我相信?),以澄清这种混乱。
至less这是我们的方法 – 如果你在野外检查了多个教程,你可能已经看到,当谈到Backbone的时候,许多开发者都有这么多的方法。 这就是Backbone的美丽! 🙂
通常我做我自己的控制器,让路由器做它的东西(捕捉路线,并指向一个控制器的行动)。 这些控制器是自制的,只是JavaScript对象与他们的方法。 他们接受来自路由器的请求,收集正确的数据(集合,模型…)并采取必要的观点,将它们合并并将数据传递到视图中。
从那里再次是骨干。
不过最近我来到了一个叫做backboneMVC的第三方骨干插件。 已经阅读它的文件,但还没有尝试自己。
它的目的是接pipe你的路由器,根据你的控制器和你定义的行为来制作路由。
看看这个图书馆,但是我不能答应任何东西,因为我自己还没有build立一些东西。