首页 关于我们

Backbone总结

Word count: 513 / Reading time: 1 min
2015/10/10 Share

为什么选择Backbone

项目之初,需要选择一个框架作为底层开发,当时想到的是angular、backbone、vue,其都是MV*的开发方式。而我考虑的几点是

  1. 学习成本低,可以快速上手
  2. 框架的利用率和总体体积
  3. 框架的更新周期
  4. 框架的讨论热度
    兼顾这几方面,选择了Backbone。Backbone的视图功能是比较单一和广泛的,可以随意使用,没有太多的条条框框。但是不足的是Collection和Model的功能跟View不匹配,View对于Collection和Model而言显得有点功能单薄。

Backbone

Backbone的视图创建很简单,只是创建了几个公共的方法和提供一些事件监听和发布的发放,其自身不具备模板功能,和视图与Model的绑定功能,很多事情还是需要自己在程序里编写。

Backbone的Router可以实现前端的路由,而且还具备了pushState实现无刷新跳转,不过这样子需要取消所有的跳转。Router的不足是不能创建多个子的Router配置,所有的配置都扔到一个地方,也是挺难维护的。另外Router还无法监听匹配不上的事件,后来在源码里发现它找不到匹配的路由时直接跳过了,什么都没有做,所以需要监听的话,可以重写它的loadurl方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
Backbone.history.loadUrl = function(fragment) {
fragment = this.fragment = this.getFragment(fragment);
var result = _.any(this.handlers, function(handler) {
if (handler.route.test(fragment)) {
handler.callback(fragment);
return true;
}
});
if(result == false){
Backbone.history.trigger("router:nomatch", fragment);
}
return result;
}

Backbone的Model和Collection支持ResetApi,不过在项目中没怎么用,因为接口也不是resetApi风格的,基本都是自己写后端的数据请求。

Backbone在使用的时候需要注意视图的划分,划分得太细需要写太多的代码,但是耦合太多,则后期可能不好维护,需要一些经验做基础,预测一下可变的部分。

CATALOG
  1. 1. 为什么选择Backbone
  2. 2. Backbone