什么是学习backbone.js的最佳方法?还有其他替代方案吗?

59

我刚开始接触backbone.js。看起来它非常复杂,你不能只看一个例子就说:"嗯,这很容易!",然后开始高效地使用它。尽管如此,它确实是个不错的框架。

文档还可以,但我发现自己无法很好地理解“整体构架”,以及所有这些组件是如何协作的。在各种视图中绑定和呈现事件似乎会有很多纠缠。我理解需要关注点分离的原因,但我确实想知道它是否被过度设计了一点。

实际上...我无法立即高效地使用backbone.js。我认为需要一两天的学习曲线。

进入backbone.js的最佳方法是什么?继续努力前行,还是有一些更大型的示例应用程序可以下载来查看?

是否存在更好的替代方案,可能更易于学习并提供相同的好处?对我来说,高效性和直观性非常重要。我觉得backbone.js的工作方式有点陌生。这可能只是我的问题。

换句话说,也许最好不要使用backbone这样的库来开发我的应用程序,而是有机地创建类似backbone.js但更符合我的直觉和结果代码库的框架。

我一直在尝试用自己的代码运行简单的示例,但没有JavaScript错误......但它不起作用。有很大的可能性是“一个小问题”出了错...但我开始觉得调试我的backbone应用程序可能是个问题...所以也许有机地发展自己的框架其实对我的心理健康来说是一个更好的选择。在黑暗中调试会真正影响生产力......老实说,如果节省我数小时的无休止调试时间,我宁愿自己编写框架并编写自己的代码。

我不知道该怎么办 - 这就是为什么我要问的原因。


我继续使用backbone并逐步实现功能,这样安全吗?我已经让模型和集合正常工作了...所以也许我可以从那里开始,这样我就不必再编写低级别的ajax调用了。我刚学习到其他几个选项。学习它们需要一些时间(如sproutcore、javascriptmvc等)。选项很多,但有时会让人感到不知所措。选项还可能会降低生产力,因为你需要做出更多决策 :) - egervari
1
没错,只使用Backbone的某些部分而不使用其他部分是完全可行的。这个想法就是backbone不会在你的代码上强加一些过度的结构。至于嵌套集合,文档给出了一个例子: http://documentcloud.github.com/backbone/#FAQ-nested - Stoive
1
我自己实现了一个框架,进展非常棒。但我希望有个地方可以展示我的代码。它类似于Backbone,但更加简单易用,而且更加直观。实际上并没有花费我太多时间。我将“控制器事件”与视图分离开来,这在概念上有很大的区别。我还简化了对象之间的监听方式,采用了一个简单的发布/消费接口。视图可以轻松地监听集合或模型,并消费其所需的任何/所有事件。实际上,我更喜欢我自己的实现方式。 - egervari
我在这里尝试给出了Backbone的元概述:https://dev59.com/NW035IYBdhLWcg3wcvmS#24578786。我建议在创建自己的框架之前学习Backbone,它非常好。一旦你理解了它,你会发现你可以从自制的MVC代码中获得大部分价值。 - superluminary
在我学习时,Hackr.io 上有最好的初学者级别的 Backbone.js 教程 - http://hackr.io/tutorials/backbone-js - Gaurav Gupta
显示剩余5条评论
4个回答

27
与学习许多与编程相关的事物一样,我的建议是:
  • 选择一个适合你正在处理的任务
  • 尝试执行该任务
  • 如果发现卡住了,请展示你所拥有的代码并解释你认为应该发生什么。确保查看文档以验证函数按照你预期工作。
  • 随着进步,人们也会向你展示更标准和有效的做事方式
  • 继续这样做,直到你变得更加熟悉事物的运作方式
  • 现在,请深入阅读文档以帮助完全掌握它的整体运作方式,并继续提问
  • 很快你将会回答问题而不是提问

是的,我大多数时候都是这样做的。我认为让backbone.js更加令人困惑的是它更像一个白盒子框架而不是黑盒子框架……所以有很多神奇的事情在幕后发生,这使得很难知道正在发生什么。文档没有解释这种魔术——只有一些小碎片。我认为文档应该花同样多的时间来说明它们如何配合使用:(我也刚刚在过去的一个小时里发现了所有这些其他框架:Sammy,SproutCore,JavaScriptMVC等——我感到非常惊讶和不知所措。 - egervari
我不想在另一个框架实际上可能是更好的解决方案时被困在使用一个框架中。我只是没有太多的ajax编码经验,无法从中获知并做出良好的判断 - 我主要是服务器端程序员,或者我曾经在其他类型的项目中工作,如游戏或其他事物的复杂库和框架。尽管我了解基本的javascript和jquery,但Javascript本质上并不是我经常涉足的领域 - 只是这些框架不熟悉。 - egervari
希望我能多次点赞这个答案。它不仅与Backbone.js有关,而且几乎与所有事物有关。这似乎是一个简单的概念,但实际上我认为它并不简单。@onteria_,你认为这是许多专业和受人尊敬的用户(在各种主题中,如编程)成为他们所是的方式吗?有时候我会问自己这个问题。我很高兴听到意见。 - Fred Collins

11

但是那本书还没有发布吗? - poshaughnessy
4
我已经阅读过那本书,至少两遍。我认为Addy的解释相当混乱,不清楚。如果你没有使用过那个框架,我不建议阅读这本书。我认为这本书适合于你已经对Backbone有很多了解的情况下阅读,在他那些简单事例的非工作巨大示例中,你会理解其中的概念。他会向你解释牛是怎样的,同时却给你看一张三小时前吃掉牛的狮子的图片。 - Santiago Rebella

8
为了部分回答你的问题,我遇到了同样的问题,也差点放弃。所有的例子都不起作用,后来我发现你应该把所有的backbone JavaScript放在文档的末尾,这样你的页面就加载完成了,backbone才能与之配合工作。
先看一下underscore.js文档可能是最好的方法。你会对它的内容有所了解,backbone.js的文档并没有解释underscore的东西。所以,你很容易会对它感到困惑。但是一旦你知道underscore的内容,backbone.js就会变得更加容易理解。
此外,在我的同事们学习backbone.js时,我意识到了这一点。学习Backbone.js有三个部分--这是我的主观看法:
1)你应该了解JavaScript(不仅仅是jquery的使用,还要了解对象是什么,函数如何工作,上下文是什么,它在JavaScript中如何工作--如果你不熟悉JavaScript,你会有些迷失。
2)有些东西你只能假设并牢记--这就是结构如何工作,基本应用程序的设置方式。开始时有些东西可能不太清楚,但是只要记住它们就可以了。
3)其他的东西你必须理解,实际上正在发生什么。
找出哪些是2,哪些是3需要时间。这时,有经验的人教你,你会很容易掌握。再次强调,这是我的主观看法。
如果你想在很短的时间内完成一些工作并且学习曲线较低,请尝试使用Knockout JS。你很快就能掌握它。

5

我发现通过视频教程学习新知识更容易。可能是因为视觉上的识别,不太确定。无论如何,我发现相关的Peepcode视频教程对于理解Backbone.js的基础和思想非常有帮助。希望它们也能对你有所帮助。


似乎Peepcode的链接正在重定向到需要订阅的Pluralsight课程。 - iankit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接