Backbone学习笔记(1)

最近一两年,react和vue火的不要不要的,各种前端框架层出不穷,backbone似乎普遍使用的比较少。 因为项目上用到它,还是有研究一下的必要。 但是最主要的原因是,backbone只有两千多行,如果想要深入的钻研JavaScript,并且想了解深层的MVC框架机制的话,backbone是一个非常好的用来研究源码的库。

本系列的Backbone学习笔记主要目的是探讨Backbone的Model/View层和Router之间的协作机制,记录常用API。接下来一个系列是Backbone的源码解读,将深入了解其实现原理。

好啦,进入正题,来看看backbone到底是怎么工作的吧。 接下来的几篇学习笔记,都会围绕下面TodoList的小例子的实现来讲解。具体源码可参考官方文档:Demo of Todos List.

Backbone做了什么

Backbone最最重要的工作是把业务逻辑和用户界面分离开来。

Backbone的核心构成

严格来讲,Backbone不是一个MVC框架。之所以这么讲,是因为在backbone中,model层和view层都比较清晰,但controller在这里体现的并不明显。与之作用类似的是Router这个东东,具体的用法会在笔记中记录下来。
最重要的Model和View, 功能如下:

Model和View

描述清晰的官方文档图1:
Model and View

Model做了什么
  • 协调数据和业务逻辑
  • 从服务端加载和保存数据
  • 数据变化时发出事件
View做了什么
  • 监听UI变化并渲染UI
  • 处理用户输入和交互事件
  • 将捕获的输入数据传给Model

Collections

描述清晰的官方文档图2:
Collections

Collecions做了什么
  • 处理一组相关的Model
  • 加载和保存新的Model到服务器
  • 为Model列表的聚合和计算提供帮助函数
  • 代理模型内发生的事件,可以在一处监听可能发生在Collections内任意一个Model的变化

Router

描述清晰的官方文档图3:

Routers

Router会监测到URL的变化,根据#号后的值来定位页面的地址。

Events

Backbone的事件模块可以存在在任何对象中。对象可以绑定和触发自定义的命名事件,并且在绑定事件之前不需要声明。

接下来将以Todos的demo讲一下具体的实现。