Backbone的官方例子中的第一个也是最简单的,便是这个todos。
*<Backbone -- 一个可以在前端组织MVC架构的javascript框架 了解更多>
——–
从功能上来讲,todos就是个to do list(典型的GTD手段之一),我们可以把要做的事情一一罗列,完成后删去即可。这次的这个app完全是个webApp而且不涉及后端。虽然从原理来讲不涉及后端的主要原因是运用到了HTML5的Local Storage特性,直接将信息本地存储而不需要用后端语言来存储信息(DB etc.),但是当完整地看待这个app时,从来没有接触过webApp的同学(像我)还是会惊叹于app整个代码的架构形式,往往写过js的都大概体会过js代码的松散和全局规划的难度,像我这样的菜鸟,如果要做个app,肯定是无数个函数。。。(以下省略) 好吧,言归正传,既然是Backbone让一个WebApp组织得如此井井有条,那我们就不妨来看看,它到底是怎么做的。
——- —— ——– ——- —–*<todos源码>—— ——— —— ——- ——–
如果直接看源码的话,新手一下子看明白还是有一点点难度的吧(老鸟拜鄙视我),因为我们都压根不知道Backbone的基本形式啊。这里我就不去讲解Backbone了,要我说估计也不准确更不全面吧。。
附上个自己看过几遍的好文
1*<Backbone JS框架指南>
——–
—————-
这样一来,我们大概了解了Backbone了吧,下面开始正式的介绍,介绍完之后,我想大家对它的Model,Collection以及View这三个最基本的要素会有更深的印象。
window.Todo = Backbone.Model.extend({
window.TodoList = Backbone.Collection.extend({
window.TodoView = Backbone.View.extend({
window.AppView = Backbone.View.extend({
上面这4个声明,便是源码的全貌了,也就是说,这个App,一共包括了1个Model,1个Collection和2个View。为什么是2个View?其实稍微仔细看就会明白,第一个view是list里的每个item的view,而第二个view,是整个app的view,如果要合并,并非不可以,只是这样,整体来说更为清晰,代码的的目的性更强,更规整。
那么,我们首先来看这个Model
(Models 用来创建数据,校验数据,存储数据到服务器端;Models 还可以绑定事件。比如用户动作变化触发 models 的 change 事件,所有展示此model 数据的 views 都会接收到 这个 change 事件,进行重绘。)
代码相对教少,我就都贴过来好了。我们发现,它有一个defaults对象,用来存默认的数据,即每个item的内容和是否完成。然后是初始化函数initialize(),检测如果内容为空,填上默认content。下面还有两个函数,由于是在Model下的,而每个todo list的item都对应一个Model,所以Model里的对象和函数,都只针对自己这个item生效。例如这个toggle变化函数,便是在用户点击某个item的勾选框时,才发动的。clear函数如是。
然后是Collection » Read the rest of this entry «




