我刚开始进入backbone.js。看起来它非常复杂,并且不会只是看一个例子说"嗯,这很容易!"并开始富有成效。虽然看起来不错。
文档是可以的,但我发现自己不能很好地理解"大局",以及所有这些组件如何协同工作。事件在各种视图中绑定和呈现的方式实际上似乎是很多纠缠。我理解分离关注点的必要性,但实际上我想知道它是否只是一点点过度设计。
基本上......我无法通过backbone.js立即生产。我认为会有一两天的学习曲线。
进入backbone.js的最佳方式是什么?只是继续努力,或者是否有一些较大的示例应用程序可以下载到某处查看?
是否有更好的替代方案可能更容易学习并提供同样的好处?对我而言,生产力和直观性非常重要。我觉得backbone.js的工作方式有点异国情调。那可能只是我。
换句话说,如果没有像骨干这样的库来开发我的应用程序可能会更好,并且有机地创建一个像backbone.js这样的框架,但更像是对我来说直观的东西以及与结果代码库更内联的东西?
我一直试图用简单的例子来处理我自己的代码,并且我没有得到Javascript错误......但它不起作用。很有可能"一件小事"是错的......但是我开始觉得调试我的骨干应用程序可能是一个问题...所以也许有机地发展我自己可能实际上是一个更好的选择,我自己的理智。在黑暗中进行调试是一个真正的生产力杀手......老实说,我宁愿做自己的框架并编写我自己的代码,如果它让我无休止的调试。
我不知道该怎么办 - 所以我问的原因。
-
我写了一篇完整的文章,然后在认识到它对你所处的位置来说太基础之后将其删除了......实质上,如果你没有看到每个组件的需要,那么就不要使用它。我甚至没有开始使用Controllers,直到我走在构建Web应用程序的道路上。仅使用您理解需要的组件开发应用程序,而忽略其余部分。
-
我可以安全地继续使用骨干,一次只使用一个部件吗?我让模型和集合工作......所以也许我可以从那里开始,所以我不必再写低级别的ajax调用了。我刚刚了解了其他几个选项。我也需要一些时间来了解它们(sproutcore,javascriptmvc等)。选项很棒,但也可能是压倒性的。选项也可以降低你的工作效率,因为你必须决定更多的东西:)
-
Hrm,我还读到Backbone不支持嵌套集合,或者不能很好地执行此操作。这是一个交易破坏者。我现在还没有,但我将拥有需要处理此功能的功能。
-
是的,使用Backbone的某些部分而不是其他部分绝对没问题。这个想法是骨干不会强迫你的代码过多的结构。至于嵌套集合,文档提供了一个示例:documentcloud.github.com/backbone/#FAQ-nested
-
另一个值得检查View-side的替代方案是Kockout MVVM框架:knockoutjs.com - 从未尝试过(或将其附加到Backbone模型),但可能是一种处理绑定纠缠的方法。
-
我实际上自己做了一个框架,它的出现非常棒。我希望有一个地方可以显示代码。它类似于Backbone,但它工作得更简单,我认为它的工作更直观。它实际上并没有花那么长时间。我从视图中分离出了"控制器事件" - 男人,从概念上讲,它创造了一个与众不同的世界。我还简化了对象如何监听其他对象。这是一个简单的发布/消费界面。视图可以简单地监听集合或模型,并使用它想要的任何/所有事件。我其实喜欢我做得更多的方式。
-
我做集合和模型的方式是一个微不足道的oneliner。你只需说"comments = collection.build('comments')",然后在一行代码中设置你的集合,模型,ajax,一组标准事件,用于添加,删除,刷新,更改等。您可以使用comments.refresh(...)进行引导,或使用comments.load()加载所有数据。我还没有完成,但我的方法并不是要将jquery作为一种编程方式 - 它只是为你提供了更抽象的构建块。我认为这种方法有助于实现更多的结构自由。
-
我意识到试图抽象出事件以某种方式工作是过度杀戮......而你失去了很多表现力(比如使用直播活动)。我还意识到,将处理一个屏幕的事件放在不同的部分实际上很难弄清楚发生了什么。所以现在我的'控制器'就是您设置活动并连接页面的地方。它委托给所有较小的对象,如模型,集合,视图等。我想我最终会有两种类型的控制器 - 一种用于应用程序,一种用于页面,侧重于不同的粒度级别。
-
我试着在这里给出Backbone的元概述:stackoverflow.com/a/24578786/687677。我建议在创建自己的框架之前学习骨干,这是非常好的。一旦你理解了它,你会发现你可以从homespun MVC代码中获得大部分价值。
-
在我学习的时候,Hackr.io在Backbone.js上有最好的初级水平教程 - hackr.io/tutorials/backbone-js
与学习很多编程相关的东西一样,我的建议是:
-
选择一个您认为适合您正在使用的任务
-
尝试执行该任务
-
如果您发现自己陷入困境,请显示您所拥有的代码,并解释您认为应该发生的事情。确保检查文档以验证您的功能是否按预期工作。
-
随着您的进步,人们还将向您展示更多标准和有效的方法
-
继续这样做,直到你更熟悉事情的运作方式
-
现在,深入查看文档,以帮助完全掌握它如何作为一个整体,继续提问
-
很快你就会回答问题而不是问他们
-
是的,我这样做是为了大多数事情。我认为使backbone.js更加混乱的原因在于它更像是一个白盒而不是黑盒框架......所以这些魔法在幕后发生,这让人很难知道发生了什么。文档没有解释魔术 - 只是小块。我认为文档应该花费相同的时间来共同工作:(我也是在最后一小时内发现所有这些其他框架:Sammy,SproutCore,JavaScriptMVC等等 - 我完全惊讶和不堪重负。
-
我不想在使用一个框架时遇到困难,而另一个框架对我来说实际上可能是一个更好的解决方案。我只是没有很多ajax编码经验来从中了解这一点并做出正确的判断 - 我主要是服务器端程序员,或者我从事其他类型的项目,如游戏或复杂的库和其他框架的东西。 Javascript本质上不是我经常玩的世界,即使我知道相当多的基本javascript和jquery - 只是不是这些框架。
-
希望我能多次提出这个答案。它与Backbone.js无关,而与几乎所有事情无关。它似乎是一个简单的概念,但实际上我认为它不是。 @onteria_你认为这是多少专业和受尊敬的用户(在各种主题,如编程)成为他们的方式?有时我会问自己这个问题。我很高兴听到一个意见。
我遇到了一本很棒的书,由Addy Osmani开发Backbone.js应用程序。 Addy清楚地解释了MVC,编写模块化代码,使用jasmine测试JS代码等等。
编辑:
还有同一本书的开源版本。
-
但那本书还没有发布呢?
-
我读过那本书至少两次,在我看来,Addy的解释相当令人困惑,根本不清楚。如果您没有使用该框架的经验,我不会推荐该书。我认为这本书适用于你已经了解很多Backbone的情况,然后在他非工作的简单事物的大量例子中,你会听到这个想法。他向你解释了一只母牛如何向你展示三小时前吃过一头母牛的狮子的照片。
部分回答你的问题。我有同样的问题,也准备放弃。这些例子都没有用,我后来认为你应该将所有的主干javascript放在文档的末尾,以便你的页面加载,骨干可以使用它。
下划线,然后是主干
我认为最好的解决方法是首先浏览一下underscore.js文档。你会感觉到它是什么,backbone.js文档没有解释下划线的东西。所以,你一定会对它的含义感到困惑。但是一旦你知道下划线是什么,那么backbone.js将开始变得更有意义。
在向工作中的几位同事讲授骨干之后,我也意识到了这一点。
学习Backbone.js有三个部分 - 我的主观意见:
1)你应该知道JavaScript(不仅仅是jquery使用,但是,诸如,什么是对象,函数如何工作,什么是上下文,如何在javascript中工作 - 如果你不熟悉javascript,你'会有些失落。
2)有些事情你必须只是假设和学习 - 这就是结构的工作方式,这就是基本应用程序的设置方式。一开始的事情是没有意义的,只要全心全意地学习。
3)您必须了解的其他事项,实际发生的事情。
需要时间来弄清楚哪一个是2,哪一个是3,这是当一个从事框架工作的人教你的时候,你很容易被拾取。这也是我的主观意见。
如果你正在寻找一些东西,并且在很短的时间内以较少的学习曲线工作,那么试试Knockout JS,你马上就能把它拿起来。
通过截屏视频,我总能发现自己更容易学习新事物。它可能是视觉识别,不无论如何,我发现相关的Peepcode截屏对于理解Backbone.js的基础知识和意识形态非常有帮助。希望他们也可以帮到你。
-
似乎peepcode链接重定向到Pluralsight课程,需要订阅。