移動網站用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,至於移動端問題相信樓上幾位大大已經給出答案。
相關文章
相關標籤/搜索