什麼是Angular
AngularJS是動態Web應用程序的結構框架。 它容許您使用HTML做爲模板語言,並容許您擴展HTML的語法以清晰,簡潔地表達應用程序的組件。AngularJS的數據綁定和依賴注入消除了許多你不得不編寫的代碼。這一切都發生在瀏覽器中,使其成爲任何服務器技術的理想合做夥伴。
動態應用程序和靜態文檔之間的動態適配經常經過如下方式解決編程
一個庫:一組在編寫網絡應用程序時很是有用的函數。你的代碼是負責在它調用庫中它認爲合適的。 例如jQuery瀏覽器
框架:Web應用程序的特定實現,其中你的代碼填充詳細信息。框架是負責,當它須要某些應用程序特定時調用你的代碼。 例如,durandal,ember等。服務器
AngularJS採起另外一種方法。 它嘗試經過建立新的HTML結構來最小化文檔中心HTML和應用程序須要的阻抗之間的不匹配。 AngularJS經過咱們調用指令的構造來教導瀏覽器的新語法。 示例包括:網絡
數據綁定:{{}}框架
DOM控制結構,用於重複,顯示和隱藏DOM片斷編輯器
支持表單和表單驗證函數
將新行爲附加到DOM元素,例如DOM事件處理佈局
將HTML分組爲可重用組件。單元測試
一個完整的客戶端解決方案
AngularJS不是構建Web應用程序的客戶端的總體謎題中的單一部分。它處理全部你曾經用手寫的DOM和AJAX粘合代碼,並把它放在一個定義良好的結構中。這使得AngularJS認爲應該如何構建一個CRUD(建立,讀取,更新,刪除)應用程序。 可是,雖然它的意見,它也試圖確保其意見只是一個起點,你能夠輕易改變。 AngularJS提供瞭如下開箱即用的:測試
在一個連貫的集合中構建一個CRUD應用程序所需的一切:數據綁定,基本模板指令,表單驗證,路由,深層連接,可重用組件和依賴注入
可測試性故事:單元測試,端到端測試,模擬和測試線束
發佈應用程序以目錄佈局和測試腳本爲起點。
AngularJS的討巧之處
AngularJS經過向開發人員提供更高級別的抽象來簡化應用程序開發。像任何抽象同樣,它以靈活性爲代價。換句話說,不是每一個應用程序都適合AngularJS。AngularJS是用CRUD應用程序構建的。幸運的是,CRUD應用程序表明了大多數Web應用程序。 爲了理AngularJS有什麼好處,但它有助於理解何時一個應用程序不是一個很好的適合AngularJS。
遊戲和GUI編輯器是使用密集和棘手的DOM操做的應用程序的例子。這些類型的應用程序不一樣於CRUD應用程序,所以可能不是一個很好適合AngularJS。在這些狀況下,最好使用具備較低抽象級別的庫,例如jQuery。
AngularJS的禪
註冊回調:註冊回調會雜亂你的代碼,使得很難看到樹的森林。 刪除常見的樣板代碼,如回調是一件好事。 它大大減小了你必須作的JavaScript編碼量,它使你更容易看到你的應用程序作什麼。
以編程方式操縱HTML DOM:操縱HTML DOM是AJAX應用程序的基石,但它很繁瑣,容易出錯。經過聲明性地描述在應用程序狀態更改時UI應該如何更改,您將從低級DOM操做任務中釋放出來。大多數使用AngularJS編寫的應用程序從不須要以編程方式操做DOM,儘管若是你願意的話。
與UI進行數據封送:CRUD操做構成了大多數AJAX應用程序的任務。 從服務器到內部對象到HTML表單的編組數據流,容許用戶修改表單,驗證表單,顯示驗證錯誤,返回到內部模型,而後返回到服務器,建立了不少樣板文件 碼。 AngularJS消除了幾乎全部的這個樣板,留下描述應用程序的總體流程的代碼,而不是全部的實現細節。
寫入大段的初始化代碼只是爲了開始:一般你須要寫不少管道只是爲了得到一個基本的「Hello World」AJAX應用程序工做。使用AngularJS,您可使用服務輕鬆引導應用程序,這些服務以相似Guice的依賴注入方式自動注入到應用程序中。這容許你快速開始開發功能。做爲獎勵,你能夠徹底控制自動化測試中的初始化過程。