Backbone一些总结

Backbone 的优势和一些经验 Tip:git

  • View 的划分将页面上的视图元素解耦,粒度细化。View 间经过事件和 Model 通信,避免了 DOM 事件的滥用。
  • Model 和 Restful 的通信方式对于后端人员很是友好。
  • MVC 架构清晰, 我有个常年写 Java 没写过 JS 的同事看 Backbone 很快就了解了总体设计,虽然这时候他仍是不会写 JS。
  • Collection/Model 抽象了之前杂乱的 AJAX 请求,CRUD 请求变得很是很是方便。
  • 强烈建议 View -> Model 单向依赖,世界会美好不少。
  • 配上一个模块化加载器例如 SeaJS 会很爽。

Backbone 的一些缺点,或者说一些还没有实现的 Feature:github

  • Model 层比较简单,若是要支持 One-To-One 或者 One-To-Many 等复杂数据关系时有些力不从心。还有 一个 Model 只能属于一个 Collection 这个设计,页面复杂的时候会很受局限。例如这个问题:  (补充:Backbone.Relations 插件是这个问题的一个解决方案 By zjhiphop)
  • 同上,Model 只有基本的 CRUD 操做,不能很好的扩展,Backbone.sync 方法写的不太灵活,要想扩展就得重写 sync 方法。
  • View 层没有很强的 Page 管理机制,好比经过 URL 切换改变整个页面时,页面上尚存的 View 如何处理?直接销毁的话,是否要销毁关联的 Model、Collection?Cache 住?如何管理 Cache?
  • 内存管理须要比较当心,缺少机制避免建立重复 Model。
  • extends override 父类方法的时候得写一串的 SuperClass.prototype.someMethod.apply 什么的,就不能实现个 _super 方法么……
  • 对调试很是不友好。
  • 做者有代码洁癖(也是加分项),this.$el 你们呼唤了这么久才加上,估计此生也看不到 this._super。
  • 更新慢。

整体来讲 Backbone 还很轻,框架很漂亮可是有些细节还比较粗糙。用以前要作好对 Backbone 进行大量扩展甚至 Hack 的准备。后端

相关文章
相关标签/搜索