【JS框架】【backbone】技术文档翻译,backbone.js - v1.0.0(试水,少量)

第一次翻译英文文档,对于英语很菜的我来说,这实在是非常不容易了。给自己一个爱的抱抱。

原文地址:http://backbonejs.org/#introduction

相关资料:http://www.ibm.com/developerworks/cn/web/wa-backbonejs/

http://wenku.baidu.com/view/7bcd1cb465ce0508763213b2.html

http://wenku.baidu.com/view/d65b156c9b6648d7c1c74696.html

http://blog.lifangeye.info/2012-11-28/js-mvc/

http://blog.eood.cn/backbone

http://blog.csdn.net/soasme/article/details/6541417

一个神奇的网站,用各种mvc框架实现在线的TODO功能:http://todomvc.com/
 

*****************************************************************************

【介绍】 

在运行一个包含很多JS的web应用是,你首先要学习的是停止将数据绑定在dom元素中。这是非常简单的去创建一个JS应用最终变成混乱纠结的jquery选择器和回调通道,所用的令人厌烦和疯狂的以保证html ui、你的JS逻辑和服务器中的数据库之间的数据同步性。

使用backbone,你的数据将用models表现出来,它可以被创建、激活、销毁并保存到服务器。当一个活动的model的属性被改变时,这个model会出发一个change时间;所有显示model状态的views将收到改变的通知,因此它们可以做出相应的反馈,根据新的信息重新绘制。在一个完成的backbone应用中,你不需要编写中间代码用来在dom中通过特定id寻找element和手动更新更新html,当model改变了,对应的views只会自动更新。

如果你是初次接触,还不太了解backbone的用处,先从浏览 backbone基础项目列表 开始吧。

下面所附的大部分实例都可以运行。点击播放按钮就可以运行它们。

*****************************************************************************

【1.0升级部分】

backbone1.0 相对0.9版本来说进行了一系列简单的升级。如果你是从旧版本升级,确定已经查看了更新日志。简单来说,一些变化较大的升级包括:

*如果你想平缓的更新collection的内容,添加新的models,移除缺少的,合并已存在的,你现在可以调用set(以前命名为“update”)方法,一个类似于在model中调用set的操作。当你在一个collection中调用fetch方法时,这现在是默认的操作。去获取旧的行为,通过设置{reset: true}

*如果你的url片段中含有特殊字符,它将需要被转码,现在backbone将在你的路由控制器将它们作为参数接受之前进行转码(规范跨浏览器行为)。

*在0.9.x版本中,backbone事件集合增加两个方法:listenTo和stopListening,这使得创建视图更加容易,当你想移除这个view时它所有的观察者将会解除绑定。

*模块验证将只会在save方法中自动启用 -- 不是在set方法中除非传递{validate:true}参数选项。模块验证将用“invalid”事件替代“error”。

*****************************************************************************

【Backbone-事件】

||Events|| 是一个可以再任意对象中使用的模块,给予对象绑定和厨房系统命名时间的能力。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.on(event, callback, [context]) 别名: bind 

为对象绑定一个回调方法。这个回调方法将在这儿事件被解绑时调用。如果你在一个网页中写有大量的不同时间,通常管理是用冒号给它们命名:"poll:start"或"change:selection"。时间字符串也可以表示为用空格分隔的多个事件列表。

book.on("change:title change:author", ...);

当回调方法被调用时为this指定一个环境变量,传递可选三个参数:model.on('change', this.render, this)

回调方法被绑定在特定的“all”事件上时,将在任意事件被重写时触发,并会将事件的名称作为第一个参数传递过去。例如,通过一个对象代理另一个对象的所有事件:

proxy.on("all", function(eventName) {
  object.trigger(eventName);
});

所有backbone事件方法都支持事件map语法,作为一个替代位置的参数:

book.on({
  "change:title": titleView.update,
  "change:author": authorPane.update,
  "destroy": bookView.remove
});

-------------------------------------------------------------------------------------------------------------------

*offobject.off([event], [callback], [context]) 别名: unbind 

移除对象之前被绑定的某个事件。如果没有指定环境,所有不同环境中各版本的回调方法都将杯移除。如果没有指定回调方法,该事件的所有回调方法都将被移除。如果没有指定事件,所有帮顶改回调方法的时间都将被移除。

// 只移除 `onChange` 回调方法
object.off("change", onChange);

// 移除所有名为 "change" 的回调方法
object.off("change");

// 移除所有事件中命名为 `onChange` 的回调方法.
object.off(null, onChange);

// 移除 `context` 环境中所有事件的所有回调方法.
object.off(null, null, context);

// 移除 `object` 中所有的回调方法.
object.off();

注意,调用model.off(),例如,它将移除model的全部事件,包括backbone内置用来记录的事件。

-------------------------------------------------------------------------------------------------------------------

*triggerobject.trigger(event, [*args]) 

通过给定的时间触发回调方法,或者替代时间列表。

你可能感兴趣的:(【JS框架】【backbone】技术文档翻译,backbone.js - v1.0.0(试水,少量))