移动网站用backbone仍是angular?

做者:戴嘉华
连接:https://www.zhihu.com/question/21871888/answer/26130922
来源:知乎
著做权归做者全部,转载请联系做者得到受权。

我搞不懂为何如今还有人用Backbone,它的流行就是一种病毒般传染的恶性循环。不过目前状况有点改观,感受很欣慰。

Backbone惟一的优点在于学习成本,对于不会如何组织本身的应用程序和懒得去接受比较高级的概念的人来讲,Backbone是很是好的选择。吐槽一下Backbone:
  1. 几乎什么都没干。
  2. 没有data-binding。纵观这么多MV*框架,Backbone是在这点上最偷懒的一个。全部data和view的数据绑定都要靠本身用事件来绑定。
  3. SPA很重要一个须要解决的问题就是视图的嵌套和视图的组合。Backbone你须要搭配一个 Marionette.js或者Chaplin 才好驾轻就熟。
  4. 视图爆炸。基本上须要的逻辑都要在view里面处理,view又有复杂的嵌套关系。view会很是的零散,加上view之间依赖,基本上没有扩展性可言。为了解决这个问题,当年还写了一个插件backbone.Composite 来解决
  5. 相对而言,可维护性和可扩展性极差。虽然Angular库体积自己比Backbone大,可是若是你构建的是一个比较大型的App,最终你用Angular写的代码会比Backbone要少不少,并且不是一两倍的问题。
  6. ...

好了,虽然这样说,Backbone仍是有优势的,例如体积比较小,学习成本低。所谓的缺点,其实这也是自己Backbone的哲学所决定了它一些实现。

用Angular,它包含不少复杂的概念,也许不懂它为何要加这么多乱七八糟的东西,可是慢慢地你就会了解一切都是有它存在的缘由的。若是你在没有用Angular以前,构建过大型的SPA,而且通过蛋疼的几回大重构之后,就会发现Angular全部的东西filter,service,BDD Test等等的存在都是合理的。有一句话不知道听过没有,大概是这样的:一个程序员不学数据结构与算法,那么他编程一生的经验就能够写成一本“数据结构与算法”。 Angular的状况也大概同样,它是一群人不少年蛋疼的经验所总结出来的东西,咱们就不要走弯路了。

可是,Angular不少时候是小题大做,为了让新手们可以不犯低级错误,它作了不少限制。对于前端框架,我认为其实没有必要作这么复杂。一个data-binding的库,加一个事件处理库,加一个动画库,加以一些模块化技巧,就能够松松实现Angular主张的一些东西,搞定各类SPA。

一句话总结: 若是你看重学习成本,选Backbone;若是你看重之后的可维护性,用什么都好,不要用Backbone,至于移动端问题相信楼上几位大大已经给出答案。
相关文章
相关标签/搜索