本篇文章主要的向大家介紹了有關於angularjs的曆史,還有angularjs的優點和angularjs的缺點的介紹,現在就讓我們一起來看這篇文章吧
首先我們先瞭解一下angularjs的曆史背景:
在Web開發領域,我們一般使用HTML作為前端頁面元素的聲明式語言,使用CSS技術作為展示樣式的描述語言,JavaScript作為業務處理互動的命令式語言。當我們構建非常複雜的Web應用時,純粹而有限的HTML就顯得非常不足,Javascript本身也會隨著項目代碼量的膨脹而難以維護和管理,研發工期和成本也會隨之難以控制。這時候,我們一般使用一些類庫(例如jQuery、Dojo等)或架構(例如Backbone、Ember、ExtJS等)來提升開發效率,進而降低項目的工期和成本,也方便後續的維護和管理。
而AngularJS不僅是一個理念先進(逼格高)的前端開發架構,更是一種端對端(End to End)的解決方案。AngularJS遵從架構設計中的MVC模式,提倡展現、資料和邏輯處理組件的松耦合(類似Flex和WPF)。AngularJS通過指令技術對傳統HTML實現了自然擴充,通過編譯技術實現了資料模型與展現視圖的雙向自動同步,從而消除了前端開發中繁瑣複雜的DOM操作(想想看那些一片片的selector)。最後再通過模組化設計解決了JS代碼管理維護和按需載入的問題,解放了廣大前端程式員(以及後端程式員)同胞完成前端開發工作單位的生產力。而且這種解耦本身,也對前端的自動化測試技術提供了良好的支援。(想知道更多推薦到topic.alibabacloud.com的angularjs參考手冊欄目學習)
再來介紹angularjs的優點:
1.模板功能強大豐富,並且是聲明式的,內建了豐富的Angular指令;
2.是一個比較完善的前端MVVM架構,包含模板,資料雙向繫結,路由,模組化,服務,過濾器,依賴注入等所有功能;
3.自訂Directive,比jQuery外掛程式還靈活,但是需要深入瞭解Directive的一些特性,簡單的封裝容易,複雜一點官方沒有提供詳細的介紹文檔,我們可以通過閱讀原始碼來找到某些我們需要的東西,如:在directive使用 $parse;
4.ng模組化比較大膽的引入了Java的一些東西(依賴注入),能夠很容易的寫出可複用的代碼,對于敏捷開發的團隊來說非常有協助,我們的項目從上線到目前,UI變化很大,在摸索中迭代產品,但是js的代碼基本上很少改動。
5.補充:Angular支援單元測試和e2e-testing。
註:最好的一點就是angularjs的雙向繫結以及他的模板層使用。
最後來介紹下angularjs的缺點:
1.驗證功能錯誤資訊顯示比較薄弱,需要寫很多模板標籤;
2.ngView只能有一個,不能嵌套多個視圖,雖然有angular-ui/ui-router 解決,但ui-router 對於URL的控制不是很靈活,必須是嵌套式的;
3.對於特別複雜的應用情境,貌似效能有點問題,特別是在Windows下使用chrome瀏覽器,不知道是記憶體流失了還是什麼其他問題,沒有找到好的解決方案,奇怪的是在IE10下反而很快,對此還在觀察中;
4.這次從1.0.X升級到1.2.X,貌似有比較大的調整,沒有完美相容低版本,升級之後可能會導致一個相容性的BUG,具體詳細資料參考官方文檔AngularJS,對應的中文版本:Angular 1.0到1.2 遷移指南,現在angularjs4都出來了,但是使用angularjs2的比較多;
5.ng提倡在控制器裡面不要有操作DOM的代碼,對於一些jQuery 外掛程式的使用,如果想不破壞代碼的整潔性,需要寫一些directive去封裝外掛程式,但是現在有很多外掛程式的版本已經支援Angular了,最好能夠和cordova外掛程式結合進行混合式開發;
6.Angular 太笨重了。
註:最不爽的一點是AngularJS的路由機制,很容易出問題。