翻译:栩
日期:2014.4.16
原因:网上流传的中文文档的版本是0.5,比较旧了,新版本有很多更新
英文水平:差
状态:更新中
Backbone为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构。其中模型用于绑定键值数据和自定义事件;集合附有可枚举函数的丰富API; 视图可以声明事件处理函数,并通过RESRful JSON接口连接到应用程序。
(GitHub介绍略)
下载和依赖
(下载略,请前往官网)
Backbone唯一重度依赖Underscore.js(>=1.50)。基于RESTful(一个架构样式的网络系统)的约束,histroy的支持依赖于Backbone.Router ,DOM处理依赖于 Backbone.View,包括jquery,json2.js对旧的IE浏览器的支持。(模仿Underscore 和 jQuery 的APIs,例如 Lo-Dash 和 Zepto,在不同的兼容性下也一样能运行)
介绍
当我们开发含有大量Javascript的web应用程序时,首先你需要做的事情之一便是停止向DOM对象附加数据。 通过复杂多变的jQuery选择符和回调函数创建Javascript应用程序,包括在HTML UI,Javascript逻辑和数据之间保持同步,都不复杂。 但对富客户端应用来说,良好的架构通常是有很多益处的。
通过Backbone,你可以将数据呈现为 模型, 你可以对模型进行创建,验证和销毁,以及将它保存到服务器。 任何时候只要UI事件引起模型内的属性变化,模型会触发"change"事件; 所有显示模型数据的 视图 会接收到该事件的通知,继而视图重新渲染。 你无需查找DOM来搜索指定id的元素去手动更新HTML。 — 当模型改变了,视图便会自动变化。
某种意义上说,在用javaScript来创建web项目时,Backbone尝试定义一组最小而高效的集合,包括了数据结构(models 和 collections)和用户接口(views 和 URLS)。在web开发环境里,到处都是框架(帮你写好了一切),不过这些库需要你的网站在构建的时候符合该框架的样子,风格,默认的行为。但是,Backbone还是作为一个工具,让你可以随心所欲的设计你的网站。
如果你不懂Backbone或者不确定Backbone能否帮助到你,先运行一下一些Backbone的例子。
文档下面有大量可以运行的例子,请点击 play 运行。
版本更新
内容略
Backbone . Events 事件
var object = {}; _.extend(object, Backbone.Events); object.on("alert", function(msg) { alert("Triggered " + msg); }); object.trigger("alert", "an event");
var dispatcher = _.clone(Backbone.Events)
on
给 object 绑定一个返回函数。只要事件触发,返回函数就会执行。如果你的一个页面含有大量的时间,我们约定俗成地使用冒号来命名:"poll:start", 或者"change:selection"。事件也可以通过空格划分为几个事件。
book.on("change:title change:author", ...);
model.on('change', this.render, this)
proxy.on("all", function(eventName) { object.trigger(eventName); });
book.on({ "change:title": titleView.update, "change:author": authorPane.update, "destroy": bookView.remove });
off
// Removes just the `onChange` callback. object.off("change", onChange); // Removes all "change" callbacks. object.off("change"); // Removes the `onChange` callback for all events. object.off(null, onChange); // Removes all callbacks for `context` for all events. object.off(null, null, context); // Removes all callbacks on `object`. object.off();请注意使用 model.off(),这个会真的删除所有的事件,包括Backbone内部用来统计的事件。
trigger
object.trigger(event, [*args])
once
object.once(event, callback, [context])
listenTo
object.listenTo(other, event, callback)
view.listenTo(model, 'change', view.render);
stopListening
object.stopListening([other], [event], [callback])
view.stopListening(); view.stopListening(model);
listenToOnce
Catalog of Events 默认事件
Backbone . Model 模型
Models是任何Javascript应用的核心,包括交互数据以及大量相关逻辑:转换,验证,属性和访问控。你用特定的方法去继承Backbone.Model,同时Model提供了一套基础的管理函数。