我从http://documentcloud.github.com/backbone网站试图理解backbone.js的实用性,但仍然无法弄清楚很多东西。
有人能否通过解释backbone.js如何工作以及如何在编写更好的JavaScript方面有所帮助来帮助我?
我从http://documentcloud.github.com/backbone网站试图理解backbone.js的实用性,但仍然无法弄清楚很多东西。
有人能否通过解释backbone.js如何工作以及如何在编写更好的JavaScript方面有所帮助来帮助我?
Backbone.js是一种超级轻量级框架,可让您以MVC(Model,View,Controller)方式构建JavaScript代码结构,其中...
Model是检索和填充数据的代码部分,
View是该模型的HTML表示形式(视图随着模型的更改而更改等)
还有一个可选的Controller,在这种情况下,它允许您通过hashbang URL保存JavaScript应用程序的状态,例如:http://twitter.com/#search?q=backbone.js
我发现Backbone的一些优点:
没有JavaScript混乱:代码经过组织并分解为语义上有意义的.js文件,然后使用JAMMIT合并。
不再需要jQuery.data(bla,bla)
:无需在DOM中存储数据,而是在模型中存储数据。
事件绑定自动完成。
非常有用的Underscore实用程序库。
backbone.js代码有很好的文档记录,并且阅读起来很棒。让我了解了许多JS代码技术。
缺点:
这里有一组关于使用Backbone与Rails作为后端的教程:
CloudEdit:一个使用Rails的Backbone.js教程:
http://www.jamesyu.org/2011/01/27/cloudedit-a-backbone-js-tutorial-by-example/
http://www.jamesyu.org/2011/02/09/backbone.js-tutorial-with-rails-part-2/
另外还有一个很棒的Collection类,它可以让你处理多个模型,并模拟嵌套模型,但我不想在一开始就让你感到困惑。
data-
属性设置回DOM元素。(因此,如果您的HTML在页面加载时具有data-
属性,并且它们发生了更改,则DOM和内存表示将不同步 - 但您应该使用内存数据进行操作) - JoeBrockhausBackbone是一个非常小的组件库,可以帮助你组织代码。它被打包成一个JavaScript文件。除去注释,它不到1000行实际的JavaScript代码。它的代码编写得很合理,你可以在几个小时内阅读整个库。
它是一个前端库,你可以使用script标签将其包含在网页中。它只影响浏览器,并且对于服务器没有太多要求,除了最好暴露出一个restful API。
如果你有一个API,Backbone有一些有用的功能,可以帮助你与之通信,但你也可以使用Backbone为任何静态HTML页面添加交互性。
...给JavaScript添加结构。
因为JavaScript不强制执行任何特定的模式,JavaScript应用程序很快就会变得非常混乱。任何在JavaScript中构建超出平凡的东西的人都可能遇到这样的问题:
Backbone试图通过提供以下内容来回答这些问题:
我们称之为MV *模式。模型、视图和可选组件。
尽管初始外观可能不是那么轻巧,但Backbone非常轻量级,它几乎什么都不做。它所做的事情非常有帮助。
它给你一组小对象,你可以创建并使其发出事件并相互监听。例如,您可以创建一个代表评论的小对象,然后再创建一个commentView小对象来表示在浏览器中特定位置显示评论。您可以告诉commentView监听评论,并在评论更改时重新绘制自己。即使在页面上多个位置显示同一评论,所有这些视图都可以同时监听相同的评论模型并保持同步。<p data-username="derek" data-age="42"></p>
这使我们的代码保持整洁有序,实现了关注点的清晰分离。
您可以按任何您认为合适的方式实现您的渲染函数。您可能仅需在此处放置一些jQuery来手动更新DOM。
您也可以编译模板并使用它。模板只是一个带有插入点的字符串。您将其与JSON对象一起传递给编译函数,并获得编译后的字符串,然后可以将其插入到DOM中。
您还可以访问存储模型列表的集合,因此todoCollection将是一个todo模型列表。当集合获得或失去模型、更改其顺序或集合中的模型更新时,整个集合都会触发一个事件。
视图可以侦听集合并在集合更新时更新自身。
您可以向集合添加排序和过滤方法,并使其自动进行排序。
shoppingCartView.listenTo(shoppingCart, "add", shoppingCartView.render);
Backbone.js是一个JavaScript框架,帮助您组织代码。它实际上是您构建应用程序的骨架。它不提供小部件(如jQuery UI或Dojo)。
它为您提供一组酷炫的基础类,您可以扩展这些类来创建干净的JavaScript代码,并与服务器上的RESTful端点进行交互。
JQuery和Mootools只是一个工具箱,拥有很多你项目需要的工具。Backbone则像一个架构或者一个脊梁骨,你可以在上面使用JQuery或Mootools来构建应用程序。
这是一段非常不错的入门视频:http://vimeo.com/22685608
如果您想了解更多关于Rails和Backbone的内容,Thoughtbot有一本相当不错的书(非免费):https://workshops.thoughtbot.com/backbone-js-on-rails
我必须承认,MVC的所有"优点"从未使我的工作更轻松、更快或更好。它只是让整个编码体验更抽象和耗费时间。当尝试调试别人对分离概念的构想时,维护是一场噩梦。不知道你们中有多少人曾经尝试过更新使用Cairngorm作为MVC模型的FLEX网站,但是本应只需30秒即可完成的更新通常需要花费超过2个小时(寻找/追踪/调试,只为找到一个单一事件)。对我来说,MVC过去和现在仍然是一个可以抛弃的"优点"。
这是我写的有关BackboneJS的快速入门帖子。希望能对您有所帮助! http://www.infragistics.com/community/blogs/nanil/archive/2013/04/01/exploring-javascript-mv-frameworks-part-1-hello-backbonejs.aspx