哇,这是一个相当广泛的帖子;让我们一次处理一件事情
为什么他们在 MVC 定义中使用 Collection 而不是 Controller?
确切的答案因库而异,但一个简单的答案是大多数 Javascript 应用程序中的控制器并不真正需要任何框架。它们可以是原始的 Javascript 并且工作得很好,因为它们通常不是很复杂。
此外,您可能认为是“控制器”的部分通常是单独提供的。主要的例子是 Backbone 的 Router 对象:它类似于 Rails 中的隐含路由(和 routes.rb),或 Django 中的 urls.py。正如那些框架不认为路由是“控制器”的一部分一样,Backbone(和类似的框架)将路由作为一个单独的部分提供......即使它可能属于 MVC 中的 C 语言。
类似地,jQuery 提供的大部分 DOM 操作功能通常属于 MVC 应用程序的控制器,因此从某种意义上说,jQuery 可以帮助您构建控制器;Backbone.Model 帮助您构建模型的方式并不明确。
我会使用 Backbone.js 之类的东西来进行客户端工作,而 Node.js 用于服务器端吗?
那真的是苹果和橘子;用服务器端的术语来说,Backbone 更像 Rails,而 Node 更像 Ruby(或 Mongrel 之类的)。所以是的,一个是客户端,另一个是服务器端,但差异远不止于此。
关于从哪里开始有什么建议吗?
选择一个框架,让你的手变脏!说真的,你可以花几个小时阅读不同框架的评论,但最终还是比开始时更接近于做出决定(我是根据经验说话)。但是,如果您只是选择一个并尝试它,您可能会发现它要么与您“凝胶”,要么不会很快。
就个人而言,我建议从 Backbone 开始,因为 A)它现在非常流行,并且 B)我有偏见:我每天都使用它并且喜欢它。此外,它可能很适合您,因为它是由 CoffeeScript 人创建的(CoffeeScript 是他试图使 Javascript 更像 Ruby)。然而,Ember.js 最近也很流行,Hector 提到了 ExpressJS,我对此一无所知,但可能很酷。
但关键是,选择一个,打个招呼,或者更复杂一点的东西,比如介绍性教程(Backbone 有一个围绕 To Do 应用程序的教程)。用它编写几个小时的代码会比我(或 Stack Overflow 上的任何其他人)更能告诉你它是否适合你。