Jan 08

Backbone框架浅淡

最近用Backbone用得很多,谈下我的一些感受。

Backbone.JS

首先,Backbone是什么东西?

Backbone是这么定位自己的:它对一些重Javascript应用(javascript-heavy application)提供了结构支撑

这结构支撑的核心组件是:有键值模型支持的Model、有丰富可枚举操作的Collection,和宣言式事件声明的View。

具体的介绍有豆瓣的MVC实践的PPT:http://www.slideshare.net/taobaoued/mvc-8584291

Backbone的确是个好东西,他有着很多优点:

  1. underscore完整实用的编程API支持
  2. 各类型组件良好的封装接口
  3. 集合化对象操作,这方面跟underscore配合是神器
  4. 全事件化操作,发挥JS的优势
  5. 默认对RESTFUL接口的全面支持与扩展接口
  6. 对微框架支持很好,主要是jQuery和mootools。 (而且可以随便进行扩展与改写,里面的模块化与解耦是做得很赞的 )

局限

可惜,必然不会所有人都喜欢Backbone。

因为它的思路很偏向于架构师思维,的确可以做到极高的可维护性,但却使得编码效率有所降低,而且入门门槛会比较高。

它的门槛主要在于,Javascript,和事件化的面向对象机制。

个人感觉,如果没了事件化的支持,那Backbone就只是堆麻烦的条条框框,没有了任何的价值。

所以……

对于只关注于算法、语言结构优化、传输优化、浏览器渲染这类的前端程序员来说,他会不喜欢这么多的限制,而只想用原生的方式,因为那样能完整地对计算机处理进行控制;

对于只关注于语义化、新标准、风格系统、视觉展现、交互设计这类的前端设计师来说,他也会不喜欢,因为可能HTML、基于jQuery的JS对他们来说已经很麻烦,而对象化编程对于他们来说不是同一个次元的东西。

而对于纯粹的后端程序员、云端架构师、DBA或是运维人员什么的来说,也许这些MVC架构、事件模型什么的他们会很清楚,可是……GUI是什么鬼东西?

还好,前端的人们跨界的也是特别多的。而这种架构基础,对于比较大规模的复杂交互的应用来说,肯定是不可或缺的。

对比

就我的经验而言,这应该是——应用结构支撑型框架。

他只是一个支撑,在这个支撑下GUI组件和模型可以有比较好的分层与接口,也可以以事件地方式比较好的组织他们之间的交互。

它跟其它框架不同:

比如jQuery,mootools,prototype,这类属于DOM及兼容性框架,是WEB应用的底层框架;

而像EXTJS,jQueryUI, dojo这类属于GUI框架,是极其高层的框架,代价也就是极多的代码量和比较高的学习成本,当然好处也很明显,上手了就能马上做出应用,而不用再去研究什么HTML/CSS/兼容性/各种细节实现。

它也不是具体的库:

现在多数的库会写好调用并接进jQuery.prototype,以便 DOM 直接进行调用,或是提供特定业务的封装接口。如果硬要说库的话,Backbone里面的router会比较像一个具体业务的实现库,提供了WEB应用对hash的路由,能部分解决AJAX造成的SEO问题。只是个人感觉它还是不太够完美,只支持path而没原生的query支持。这个可能也是见仁见智吧。

总之,现在WEB端的东西算是越来越百花齐放了,这真是让我心花怒放啊!

Posted in 开发 | Tagged , , , | 1 Comment

One Response to Backbone框架浅淡

  1. 独自流浪

    January 9, 2012 | 8:00 am

    百花齐放、万家争鸣~

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Notify me of followup comments via e-mail. You can also subscribe without commenting.