嗯,我不能为您决定,主要取决于截止日期有多接近,但我个人喜欢Backbone.js方法。
如果我不得不说,我可以说你会有一个静态和可缓存的JS脚本和轻的AJAX请求(只有JSON),而与另一种方法,你会有更重和不可缓存的脚本下载。
但最重要的是,我相信骨干方式是让您的代码组织化和可维护的最佳方法。
Coffeescript非常好,学起来非常快。它简化了很多JS语法并使其变得有趣。这值得尝试。在30mn学习。
Backbone.js非常好,而且学起来很快。使用这种方法将允许您依赖事件,这比我们无法做到的事情要干净得多。
感谢资产管道,您可以将视图/模型/路由器类拆分为单独的文件,这非常好。
由于CoffeeScript中你可以用一个非常清晰的语法一样,写你的骨干对象:
class @MyView extends Backbone.View
events:
'click obj': 'handler'
[...]
有了,我在我的项目加入少许@module
帮手来组织我的对象到命名空间。
但是,它需要一些时间才能找到好的文件组织。
您可以从gem rails-backbone
开始,并有一些类似于导轨的发电机。我不喜欢这个人,但我认为这是一个好的开始。它包括适用于导轨的Backbone.sync
功能。
编辑
这里对@module
帮手一些细节。我包括这application.js.coffee
(不要忘记require_self
):
@module = (names, fn) ->
names = names.split '.' if typeof names is 'string'
space = @[names.shift()] ||= {}
space.module ||= @module
if names.length
space.module names, fn
else
fn.call space
在我的类文件:
@module 'MyProject.Model', ->
class @MyModel extends Backbone.Model
[...]
(注:@
是this.
的CoffeeScript的快捷方式。)
的助手创建对象MyProject
和MyProject.Model
(如果需要)(如果为null)并执行给定函数this
绑定到MyProject.Model
。所以,你可以访问你的模型一样,从根命名空间(document
):
m = new MyProject.Model.MyModel
你也可以覆瓦状排列的帮手:
@module 'MyProject', ->
@module 'Model', ->
[...]
我用下面的命名空间层次
MyProject
Model
View
Router
Runtime (to store all runtimes objects and don't pollute the root namespace, easier for debug)
一般如果你在紧迫的最后期限内,你应该坚持团队最适合的方式。现在不是时候进行实验。但是,您可能已经知道使用Rails创建JSON api并不是很困难。如果你的团队不擅长JavaScript,那么可能需要一段时间才能熟练掌握Backbone - 但是一旦你完成了,你将能够做出一些伟大的事情。你应该为你正在尝试的东西提供一些具体的用例,也许更多的人可以通过建议加以提示。 – PhillipKregg 2012-02-28 01:32:17