javascript
多款优秀的 JS MVC 框架对比
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
正如之前說的,產(chǎn)品生產(chǎn)有功能時代轉(zhuǎn)入體驗時代,產(chǎn)品為王,體驗為王,已經(jīng)是時代趨勢。體驗經(jīng)濟的到來,說明前端的技術(shù)要求越來越高,完成功能是不行的,還要有優(yōu)秀的體驗。
? ? ? ? 所以類似原來的jquery時代類似于傳統(tǒng)的匯編或者是C時代的編程,這個階段已經(jīng)不work了。前端的技術(shù)即將邁入模式時代,MVC時代。應(yīng)此而生,現(xiàn)在有大量的前端MVC框架技術(shù)不斷出現(xiàn)。下面我們挑選幾款代表性的前端框架進行對比,以做參考。
1. ?Backbone.js?
Backbone.js是web非?;鸬目蚣?#xff0c;眾多知名品牌均支持該框架,令人印象深刻,自然地成為最先進行嘗試的框架。用它來建造了一個Group Talent內(nèi)部用行政管理方面功能的feature應(yīng)用。?
優(yōu)點:強大的社區(qū),還有大量的實力支持。例如它本身就較多地使用了Underscore.js(也是一個強大的框架)。?
缺點:抽象功能不夠強,以及一些需要的功能還沒實現(xiàn)。整個框架十分輕量級,產(chǎn)出的結(jié)果是一大堆引用文件和樣板:而且應(yīng)用的規(guī)模越大這一點就會越明顯。?
2. ?SproutCore 1.x?
SproutCore最開始是蘋果公司用于其iCloud上面的。除了名字起得很不好之外,它實際上是一個非常優(yōu)秀的框架,也是最大的框架之一。?
優(yōu)點:支持綁定,忠實的社區(qū)粉絲,優(yōu)秀的feature很多。?
缺點:過于死板,難以去除無用的feature,強制使用一種Native風(fēng)格的范例,嚴重的情況在于該框架不允許使用HTML來做布局。?
3. ?Sammy.js?
Sammy是偶然發(fā)現(xiàn)的一個比較小的框架,因為它太簡化了,基本不能占據(jù)列表的席位。其核心feature是一個路由系統(tǒng),讓應(yīng)用與AJAX進行交換。?
優(yōu)點:簡單的學(xué)習(xí)曲線,與服務(wù)器端的app集成更加容易。?
缺點:太過于簡單,對于大型應(yīng)用就有些捉襟見肘。?
4. ?Spine.js?
器如其名,Spine顯然是受到Backbone的強烈影響,像Backbone一樣也是一個非常輕量級的框架,遵循相似的模型。?
優(yōu)點:輕量級,文檔做得很好。?
缺點:從根本上就有缺陷。Spine的一個核心概念是“一個堅果外殼中的一堆異步的UI集,這意味著UI應(yīng)該是在理想化條件下永遠不會阻塞的”。而做了一系列的非阻塞式實時應(yīng)用之后,可以說這簡直是不現(xiàn)實的,除非后端是像Operational Transformation之類的。?
5. ?Cappuccino?
Cappuccino是一款更加獨特的框架,自帶編程語言O(shè)bjective-J,還能嘗試著在瀏覽器中仿真Cocoa。?
優(yōu)點:大型的構(gòu)想出的框架,良好的社區(qū)環(huán)境,強大的繼承模型。?
缺點:在您所有能用Javascript仿真的語言之外,Objective-C是最不想選用的。它起源一位iOS開發(fā)人員,到現(xiàn)在還沒想明白用瀏覽器編寫Objective-J是什么意思。?
6. ?Knockout.js?
K.O.是一個MVVM框架,受到其支持者的大量好評。它強調(diào)陳述式UI綁定和自動UI刷新。?
優(yōu)點:支持綁定,文檔做得出色,引導(dǎo)系統(tǒng)超級贊。?
缺點:綁定語法晦澀,缺乏堅實的視圖組件層次結(jié)構(gòu)。希望能夠輕松地重用組件,也覺得定義成一個MVVM框架是有害的。這些框架中基本沒有MVC,但都是(MVP,MVVM之類的)的變種。?
7. ?Breeze Js
國產(chǎn)貨,眾聯(lián)無限開發(fā)的一套獨立自研的前端MVC框架。他的概念很有意思,就是將后端開發(fā)語言,如Java,的概念模擬應(yīng)用到前端。有class有繼承,能實現(xiàn)模板和應(yīng)用綁定。
優(yōu)點:概念模擬,學(xué)習(xí)成本低,上手快。封裝很薄,擴展性和兼容性都很好
缺點:相關(guān)的組件和第三方資源比較少,依賴jquery和seajs
8. ?Google Web Toolkit?
GWT是一系列的客戶端工具包,除了框架之外還包含很多其他工具。它可以把java語言編譯成Javascript,支持標(biāo)準(zhǔn)Java庫的一個子集,最初是Google公司使用在Wave上面的。?
優(yōu)點:綜合寬泛的框架,擁有強大的社區(qū)支持。基于Java的堅實組件繼承模型,在巨型客戶端應(yīng)用上表現(xiàn)出色。?
缺點:除了Google說的之外,GWT將經(jīng)不住時間的檢驗。就好像最初DART那樣,很明顯Java不是web的未來。更嚴重的是,客戶端對于Java的抽象有一點不合適。?
9. ?Google Closure?
如果說Google Closure僅僅是一個js框架,倒不如說更像是一個工具包。附帶編譯器和優(yōu)化器。?
優(yōu)點:由Google用在其很多主流app上面。良好的基于組件的UI編寫系統(tǒng)。?
缺點:不支持UI綁定。?
10. ?Ember.js?
Ember(之前是SproutCore 2.0)是競爭者中的新丁。它是一個嘗試:從SproutCore2.0中抽取分離其核心feature并轉(zhuǎn)變成為一個更加緊湊的模型框架,更加適合web。?
優(yōu)點:特別豐富的模板系統(tǒng),擁有可編寫的視圖和UI綁定。?
缺點:由于太新,文檔跟不上。?
11. ?Angular.js?
Angular是在發(fā)布評估結(jié)果之后才發(fā)現(xiàn)的一個很好的框架,由Googler開發(fā),包含了很多有趣的設(shè)計選擇。?
優(yōu)點:關(guān)于模板的范圍和控制器的設(shè)計考慮的很周到。具有依賴注入系統(tǒng)。支持豐富的UI綁定語法,從而使得過濾和轉(zhuǎn)換這樣的工作開銷很小。?
缺點:代碼庫很不健全,也不夠模塊化。視圖也不夠模塊化(關(guān)于這點在Batman.js的缺陷中討論的更加細致)?
12. ?Batman.js?
Batman由Shopify創(chuàng)作,是另一款與Knockout和Angular具有相似脈絡(luò)的框架。Batman擁有良好的UI綁定系統(tǒng),是基于HTML屬性的。Batman是唯一的一款使用慣用語法Coffeescript編寫的框架,并且緊密地與NODE.Js集成在一起,甚至可以到擁有其(可選的)Node.js服務(wù)器的程度。?
優(yōu)點:代碼庫十分清晰,綁定方法優(yōu)良又簡單,耐用,流程化。?
缺點:非常不喜歡這種“獨行俠”式的作風(fēng),更不用說這種加強單一控制器的主意了。與Knockout和Angular一樣,在組件嵌套的時候遭受同樣的折磨。需要的不僅僅是模板,還更想要陳述式的可重用的模板框架。相比,Ember在框架之上擁有的是一個基于EMBER他們自己的邏輯(可能是在控制器層上的)的整套組件能陳述式重用的方法。?
轉(zhuǎn)載于:https://my.oschina.net/u/2342955/blog/523996
總結(jié)
以上是生活随笔為你收集整理的多款优秀的 JS MVC 框架对比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 孕妇梦到房顶漏水什么意思
- 下一篇: 梦到踩死老鼠是什么意思