1)代碼編輯工具 webstormhtml
2)斷點調試工具 chrome插件Batarang前端
3)版本管理 tortoiseGitnode
4)代碼合併和混淆工具angularjs
5)依賴管理工具 bower
bower 自動安裝依賴的組件
組件之間的依賴檢測
版本兼容性自動檢測
http-server
簡單的http-server
基於nodeweb
6)單元測試工具Jasmine
相似Java裏面的JUnit 提供語法編寫測試用例ajax
protractor(專爲angularjs而生的)chrome
karma-coverage數據庫
7)集成測試工具express
0)AngularJS框架強制正確實現MVC;模板聲明的功能,使HTML意圖更直觀;AngularJS模型部分是基本的JavaScript對象,容易操做;AngularJS使用聲明的方式,經過將HTML的聲明與背後的JavaScript功能直接聯繫來擴展HTML;AngularJS提供了過濾器,使得數據從模型傳遞到視圖時可輕鬆格式化數據;AngularJS傾向於使用傳統JavaScript應用程序所使用的代碼的一小部分,只需關注邏輯,沒必要關注細節,好比數據綁定;AngularJS比傳統方法所需的DOM操做少不少,指導你把操做放在程序中正確的位置,基於表示數據比基於DOM操做更易設計;AngularJS提供了內置服務,可用結構化和可重用的方式實現本身的服務;AngualrJS框架清晰地把職責分離編程
1)爲何須要MVC (模塊化和複用)
2)前端MVC的困難
AngularJS引入了表明應用程序組件的模塊的概念。模塊提供命名空間,以基於模型的名稱來引用指令,範圍和其餘組件。使得包裝和再利用應用程序的部件更容易。
AngularJS中,每一個視圖或網頁都經過ng-app指令分配給他一個單獨的模塊。能夠把其餘模塊做爲依賴模塊添加到主模塊(更結構化和組件化)
AngularJS引入做用域(scope)概念。(實際上只是用來填充呈如今網頁上的視圖的數據的JS表示),數據能夠來自任何源,如數據庫,遠程網絡服務,AngularJS代碼,web服務器動態生成etc.
做用域:普通的JavaScript對象。(能夠根據須要在AngularJS代碼中操做他們)。另外還能嵌套做用域來組織數據以匹配他們正在使用的上下文。
HTML是基於DOM的。大多數動態Web應用程序直接用js或者jQuery操做DOM。
AngularJS引入結合模板和指令創建呈現給用戶HTML的視圖的概念。
指令:1)要被添加到一個HTML模板的額外屬性,元素和CSS類。2)擴展了DOM的通常行爲的js代碼
使用指令的優勢:HTML模板模板經過指令指出了預期的邏輯。內置的AngularJS指令處理大多數必要的DOM操做功能,(可把做用域中的數據綁定到視圖)
能夠自定義指令作WEB應用的任何DOM操做
AngularJS:在HTML模板中添加表達式的能力。對錶達式求值,而後動態添加到網頁。表達式被連接到做用域。
MVC框架:經過實現控制器完成。(經過指令把控制器添加到HTML中,後臺實現爲js代碼)
AngularJS內置數據綁定:把模型中的數據與網頁提示的內容連接。
當網頁上的數據改變時模型被更新,且當數據在模型中被改變時網頁也自動更新(模型始終向用戶呈現數據的惟一來源,視圖只是模型的投影)
AngularJS在環境中工做的主力:服務。爲Web應用程序提供功能的單例對象
(web應用程序的一個共同任務是執行對web服務器的ajax請求,angularjs提供了http服務,包含用來訪問web服務器的全部功能)
服務功能在上下文中徹底獨立,能夠很容易被組件化。(如內置的服務組件:http請求,日誌記錄分析,動畫)
依賴注入:一個過程。一個代碼組件定義了對其餘組件的依賴關係。當代碼被初始化,依賴組件可提供內部訪問。
常見方法:使用服務。(若是正在定義須要經過HTTP請求訪問Web服務器的模塊,能夠把http服務注入該模塊,模塊中的代碼就能使用http功能)
重要原則:職責分離。結構化框架確保代碼很好的實現,容易理解維護測試。
視圖做爲應用程序正式表示結構。代表任何表示邏輯都做爲視圖中的HTML模板指令。
若是須要DOM操做。就在一個內置指令或本身的自定義指令js代碼中執行
把任何可重複使用的任務都實現爲服務,並經過依賴注入把他們添加到本身的模塊
確保做用域反映了模型當前狀態,而且是由該視圖使用數據的單一來源
確保控制器代碼只起到充實做用域數據的做用,而不包括任何業務邏輯
在模塊的命名空間中定義控制器,不是全局定義。
AngularJS:組件,(引導,編譯,運行階段)
生命週期的第一階段:初始化自身的必要組件,初始化ng-app指令指向模塊。模塊被加載,任何依賴關係都被注入模塊,並提供給模塊中的代碼使用。
生命週期的第二階段:HTML編譯。加載時,DOM以靜態形式被加載到瀏覽器中。編譯階段,靜態DOM被替換成表示AngularJS視圖的動態DOM。
包括:1)遍歷靜態DOM並收集全部指令,而後把指令連接到AngularJS內置庫或自定義指令代碼中相應的js功能上。指令與做用域結合,產生動態或實時視圖
最後階段:運行時階段。存在直到用戶從新加載或離開網頁。做用域的任何更改都反映在視圖中,視圖中的任何更改也直接更新到做用域。(做用域成爲視圖惟一來源)
AngularJS vs 傳統數據綁定:傳統方法把模板與從引擎接受到的數據相結合,每次數據發生變化時對DOM執行操做。AngularJS只編譯DOM一次,而後根據須要連接已經編譯的模板。
1.編寫使用模式,自定義HTML指令,服務和控制器的AngularJS應用程序。
2.確保代碼模型部分。把模型中增長模型數據的代碼分離出來,放入控制器函數。把訪問後端模型數據的代碼分離放入服務
3.肯定操做視圖中的DOM元素代碼。把DOM操做代碼分離放入定義良好的自定義指令組件,提供HTML指令。
4.肯定其餘基於任務的函數,分離放入服務。
5.把指令和控制器隔離到模塊中組織代碼
6.使用依賴注入把服務和模塊恰當鏈接。
7.更新HTML模板以使用新指令
引導:1)經過ng-app指令定義應用程序模塊,2)加載在<script>標籤中的anjular.js
ng-app指令告訴AngularJS編譯器把該元素做爲編譯的根。ng-app一般裝入<html>標籤,確保整個網頁都會被包括。