框架就比如兵器,你得明白你手裏拿的是屠龍刀仍是倚天劍,刀法主要是砍,劍法主要是刺。對於那些職業噴子和腦殘粉,小僧送大家兩個字:呵呵;同時祝你幸福,請點右上角。前端
首先要明白Angular不能作什麼,或者Angular沒有提供什麼,而後再來看它能作什麼,來看Angular與其它一些主流框架的對比。bootstrap
對於上面的表格,有人可能要跟我擡槓,咱大jQuery不是有各類插件嗎!不是有各類EasyUI、LigerUI等等一大堆UI嗎!瀏覽器
我只想說,你特麼到底有沒有作過大型的開發?各類東西倒騰在一塊兒的組裝貨能比得上品牌機?另外遇到jQuery版本不兼容就夠你喝一壺了吧!說jQueryUI各類亂已是對它客氣了,其實是一塌糊塗!前端框架
提醒某些小白區分好概念,小僧的噴點是jQueryUI,而不是jQuery,jQuery這把小巧玲瓏的瑞士軍刀小僧仍是很是喜歡滴!另外,也有 一批基於jQuery的UI套件作得很是優秀,好比KendoUI,可是一分錢一分貨,好東西基本上都是收費的。這麼多年下來了,你應該早就習慣了這條行 規。再說一次,好!東!西!都!是!收!費!的!架構
又有人說,怎麼沒把bootstrap列在裏面對比一下?請問油漆桶和Tank戰車怎麼比?你比給我看看。框架
對於前端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有什麼。
一、自動化的數據雙向綁定; 二、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!尤爲是那些只有兩三條破槍,連美工都沒有的小公司,您請靠邊兒涼快,這兒沒您什麼事兒。