AngularJS 是谷歌的一個 JavaScript 框架,旨在簡化前端應用程序的開發。html
首先angular是一個mvc框架,它與jquery不一樣之處在於,前者致力於mvc代碼解耦,採用model,controller以及view方式去組織代碼,然後者提供給你了不少APi函數,你能夠不用寫不少原生js去實現比較複雜的效果,好比說動畫,$.animate,這樣的效果若是須要原生js來寫的話,代碼量將會比較龐大;前端
其次,jQuery沒有定義你的代碼如何組織,你能夠將它放在一個單獨的js文件中進行引用,也能夠直接寫在頁面中採用script標籤進行包裹,甚至能夠直接之內聯的方式寫在html標籤中,可是angularjs會將一個HTML頁面分紅若干個模塊,每一個模塊均可以本身的scope,service以及directive,各個模塊之間也能夠進行通訊,可是總體上結構是比較清晰的,就是說其代碼組織方式是模塊化的。jquery
最後,jQuery的思想是先設計好頁面,而後在已有頁面的基礎上進行dom操做後展現頁面,可是angular的view可能僅僅是一個框架,對view的dom操做或者時間監聽都是在directive中實現的,並且通常狀況下不多本身直接去寫Dom操做代碼,只要你監聽model。model發生變化後view也會發生變化。git
jQuery應該適用於大多數web開發,移動端也有(jQuerymobile),angularjs有人說更適合作SPA(我我的認爲在手機上的SPA可能會引起性能上的問題,由於它的髒檢查機制會影響性能),在web端,一些CRUD的應用或者管理類軟件仍是可使用的(固然這裏的理解可能不必定準確,會隨着深刻學習更多去了解和使用)。angularjs
開發任何產品都須要用到前端UI,目前不少UI是基於jQuery的,這意味着你若是要用angularjs和這些Ui組件的話,須要用angularjs的directive去重寫些組件,這一過程是比較麻煩的,所幸的是,angular給咱們提供了一些UI組件可使用(web端主要是結合bootstrap前端組件),http://angular-ui.github.io/,而在移動端主要是結合ionic框架http://ionicframework.com/,可是隨着angular的發展,不少HTML5的前端框架也慢慢集成了angularjs版本可供使用。github
一般狀況下,咱們編寫 JavaScript 沒有明確的結構。雖然在編寫小應用程序的時候沒有問題,但這顯然是不適合於大規模的應用程序。使用 AngularJS,您能夠經過MVC(模型 - 視圖 - 控制器)或MVVM (模型 - 視圖 - 視圖模型)模式來組織源代碼。 AngularJS 是一個 MVW 框架,其中W表明能夠用於任何項目。你能夠組織你的代碼模塊,它可顯著提升應用程序的可測試性和可維護性。每一個模塊的代碼獨立擁有本身的做用域,model,controller等。web
數據綁定確定是 AngularJS 最佳功能之一。你能夠聲明綁定的模型到 HTML 元素。當模型Model發生變化時,視圖View會自動更新,反之亦然。這能夠減小大量的傳統樣板代碼,保持模型和視圖同步。bootstrap
AngularJS 指令讓你使用 HTML 新語法快速的構建應用程序。您能夠建立可重用的自定義組件與指令的API。強大的directive能夠將不少功能封裝成HTML的tag,屬性或者註釋等,這大大美化了HTML的結構,加強了可閱讀性;例如,若是你想自定義日期選擇器小部件,你能夠建立一個<data-picker/ >組件。若是你想要一個奇特的文件上傳與進度指示器能夠繼續建立一個<file-upload/ >組件。很酷,不是嗎?後端
AngularJS 使用 HTML 模板,這使事情變得簡單,並容許設計人員和開發人員同時工做。設計人員能夠按照一般的方式建立用戶界面,而開發人員可使用聲明性綁定語法很容易配合不一樣的UI組件的數據模型。設計模式
關於 AngularJS 的最好的事情是,它是一個很好的團隊成員。它歷來沒有要求全面承諾。AngularJS 官方網站說,你能夠根據你須要使用盡量多或儘量少的在項目中使用 AngularJS。若是你只須要雙向數據綁定,您能夠引入 Angular,只是使用此功能。
AngularJS 支持依賴注入的開箱即用。若是你須要的東西,你只要調用 Angular 來注入。將這種後端語言的設計模式賦予前端代碼,這意味着前端的代碼能夠提升重用性和靈活性,將來的模式可能將大量操做放在客戶端,服務端只提供數據來源和其餘客戶端沒法完成的操做;就這麼簡單。這巨大的提升可測試性,由於你能夠很容易地在測試的模擬組件。
AngularJS 在建立時候始終考慮着可測試性(測試驅動開發)。這些模塊和依賴注入系統,使得單元測試和端對端測試更容易。此外, AngularJS 提供了一個稱爲量角器工具,這使得終端到終端的測試變得垂手可得。因此,你開發的代碼始終是可測試性和可維護性。
另外推薦參考一篇知乎:http://www.zhihu.com/question/22284218?rf=25116320
這還不是所有! AngularJS 還提供了更多的實用功能,如路由,過濾器,和動畫等等。不過,以上幾點已足以讓我愛上它。