對比AngularJS/jQueryUI/Extjs:沒有一個框架是萬能的

AngularJS不能作什麼?對比Angular/JSjQueryUI/Extjs

 

框架就比如兵器,你得明白你手裏拿的是屠龍刀仍是倚天劍,刀法主要是砍,劍法主要是刺。對於那些職業噴子和腦殘粉,小僧送大家兩個字:呵呵;同時祝你幸福,請點右上角。前端

 

首先要明白Angular不能作什麼,或者Angular沒有提供什麼,而後再來看它能作什麼,來看Angular與其它一些主流框架的對比。bootstrap

 



  

對於上面的表格,有人可能要跟我擡槓,咱大jQuery不是有各類插件嗎!不是有各類EasyUI、LigerUI等等一大堆UI嗎!瀏覽器

 

我只想說,你特麼到底有沒有作過大型的開發?各類東西倒騰在一塊兒的組裝貨能比得上品牌機?另外遇到jQuery版本不兼容就夠你喝一壺了吧!說jQueryUI各類亂已是對它客氣了,其實是一塌糊塗!前端框架

 

提醒某些小白區分好概念,小僧的噴點是jQueryUI,而不是jQuery,jQuery這把小巧玲瓏的瑞士軍刀小僧仍是很是喜歡滴!另外,也有 一批基於jQuery的UI套件作得很是優秀,好比KendoUI,可是一分錢一分貨,好東西基本上都是收費的。這麼多年下來了,你應該早就習慣了這條行 規。再說一次,好!東!西!都!是!收!費!的!架構

 

又有人說,怎麼沒把bootstrap列在裏面對比一下?請問油漆桶和Tank戰車怎麼比?你比給我看看。框架

 

關於前端UI體系的特別說明

 

對於前端UI系統,特別說明一下。通常來講,前端UI必須包含如下控件和工具(參照了我最熟悉的Extjs):編輯器

  • Formide

    TextField模塊化

    NumberField工具

    PassWord

    ComboBox

    CheckBox

    Radio

    DatePicker/TimePicker(日期和時間控件通常沒有人會本身去寫,太複雜了!

    表單驗證:本地驗證和遠程驗證

  • DataGrid

    複雜表頭、數據格式、行內各類格式、動態編輯、分頁、動態列、滾動(等等)

    完善的數據表格也是一個很是複雜的控件,徹底本身開發不容易!

  • Tree

  • Window

    模態/非模態

  • Panel

  • TabPanel

    tab懶加載(內存釋放和瀏覽器兼容性比較繁瑣,作完善不容易!

  • HTMLEditor

    應該沒有哪一個瘋子想本身去作一個相似KindEditor那樣在線編輯器吧!什麼?你想作?藥不能停!

  • 小組件

    ToolTip

    Slider

    Pager

    ProgressBar

    Menu

    Label

    Image

    Alert

  • 佈局

    佈局系統是比較複雜的,必須有深厚的CSS基礎,不然搞出來的東西必定有兼容性問題!好吧,我知道有人確定要說bootstrap了,既然都在說那麼小僧就不說了,本身玩兒去!

  • 其它工具

    Ajax

    模板

    數據格式化

    其它各類控件就不說了,好比幻燈片效果、麪包屑,再好比「×款超棒的jQuery××」等等。

Angular沒有提供完善的UI,沒有提供CSS樣式套件,也沒有對移動平臺進行直接支持。因此,若是你使用Angular,你必定須要其它東西來配合。例如,若是須要UI,你須要使用jQueryUI,或者本身封裝UI組件;若是須要CSS樣式,你能夠選擇bootstrap或者LESS;若是須要支持移動平臺,仍是須要你本身 去開發。

 

好了,看到這裏有人開始嘀咕了,這特麼豈不是什麼都沒有嘛!!!

莫急,再來看Angular有什麼。

 

Angular能作什麼?

一、自動化的數據雙向綁定;

二、MVC;

三、依賴注入---DI系統;

四、指令系統(能夠自定義語義化標籤)---Directive機制;

五、模塊化---Module機制;

六、路由機制---Route機制;

七、服務---Service機制;

八、內嵌表達式---Expression機制;

九、前端代碼單元測試和集成測試的自動化(藉助於Yeoman等工具);

十、模板;

十一、動態加載;

 

這麼多機制裏面,核心的核心是指令系統,實際上其它全部特性都是創建在指令系統之上的。本質上說,Angular寫了一個JS版的編譯器,一切都構 建在這款編譯器之上。對於使用者來講,能夠把解析器當作一個JS虛擬機,有興趣的人能夠本身閱讀Angular的Parser(HTML解析器)源碼。

 

HTML解析器機制是其它全部框架所不具有也不敢這樣作的,它是Angular的靈魂。

 

結論

很顯然,Angular並無打算作一個高大全的所謂【框架】,它的核心價值在於,把一堆後臺框架的概念帶到了前端框架中,好比依 賴注入(來自Spring);同時又從其它地方抄了一些概念,好比數據自動雙向綁定(貌似來自Flex)、模板、MVC、動態加載(來自 RequireJS等),等等。固然,這些理念都挺好。基於這些理念和工具,你能夠把前端應用組織得很是良好。

 

可是,有一點請特別注意(尤爲那些負責技術選型的所謂「架構屍」,請瞪大你的鈦合金狗眼看好下面的內容):對於界面很是複雜的業務 型系統,必需要要有完備的UI支持(Form、DataGrid、Tree、Tab、Window等)。若是你的團隊總體JS水平很爛,或者壓根沒打算自 己去作不少東西,請慎用AngularJS!尤爲是那些只有兩三條破槍,連美工都沒有的小公司,您請靠邊兒涼快,這兒沒您什麼事兒。

相關文章
相關標籤/搜索