本教程將構建一個 Angular 應用。 這款應用能夠顯示 Android 設備列表,你能夠篩選你感興趣的設備,並查看任意設備詳情。javascript
Angular 讓瀏覽器更智能,而不依賴於任何本地插件:html
學完本教程,你應該能夠:java
ngAnimate
模塊爲應用添加動畫本教程將演示構建一個應用的完整流程,包括如何進行單元測試和 end-to-end 測試。 每一步底部都有小實驗爲你進一步瞭解 AngularJS 和當前應用提供了建議。node
你應該花上幾個小時到一成天的時間來學習本教程。若是你須要的只是 AngularJS 的簡介,能夠查看 Getting Started 。git
下面的教程將教你搭建本地環境。 若是隻是想閱讀教程,能夠直接跳到下一步: Step 0 - 啓動。angularjs
你應該邊看教程邊在本機嘗試修改示例代碼。這樣,能夠經過實際操做來理解 Angular 代碼並掌握測試工具的使用。github
本教程使用 Git 版本控制系統來管理源碼。 學習本教程不須要你瞭解任何關於 Git 的知識,除了安裝和運行一些命令。web
你能夠從 http://git-scm.com/download 下載並安裝 Git。 安裝好以後,你應該能夠在終端中使用 git
命令了。 主要的命令以下:npm
git clone ...
: 克隆遠程倉庫到本地git checkout ...
: 檢出特定分支或標籤版本以進行編輯運行如下命令來克隆遠程倉庫 angular-phonecat repository :json
git clone --depth=16 https://github.com/angular/angular-phonecat.git
該命令在當前目錄下建立了一個 angular-phonecat
子目錄。
--depth=16
選項代表只用獲取最近的 16 個提交。 這使得下載量更小,下載速度更快。
變動當前目錄到 angular-phonecat
。
cd angular-phonecat
從如今開始,本教程中的全部命令都假定你的當前目錄爲 angular-phonecat
。
若是你要運行預先配置好的本地 web 服務器和測試工具, 那麼你須要 Node.js v4+。
你能夠從 https://nodejs.org/en/download/ 下載當前操做系統對應的安裝包。
運行下面命令以肯定當前 Node.js 版本:
node --version
在基於 Debian 的發行版中, Node.js 可能和另外一個 node
工具發生命名衝突。 建議同時安裝 nodejs-legacy
包, 它會將 Node.js 命令重命名爲 nodejs
.
apt-get install nodejs-legacy npm nodejs --version npm --version
若是你須要在本地安裝運行多個版本的 Node.js , 能夠考慮安裝 Node Version Manager (nvm) 或 Node Version Manager (nvm) for Windows。
將 Node.js 安裝以後, 能夠經過如下命令下載依賴:
npm install
該命令讀取 angular-phonecat 的 package.json
文件,並下載如下工具到 node_modules
目錄:
運行 npm install
的同時也會自動調用 bower 來安裝 AngularJS 框架到 app/bower_components
目錄。
注意 angular-phonecat 項目被配置爲經過 npm scripts 來安裝並運行這些工具。 這意味着在本教程中,你不須要全局安裝這些工具。 查看 安裝輔助工具 以瞭解詳情。
該項目使用了一些 npm 幫助腳原本簡化開發時的經常使用任務:
npm start
: 啓動本地開發 web 服務器npm test
: 啓動 Karma 單元測試運行器npm run protractor
: 運行 Protractor end-to-end (E2E) 測試npm run update-webdriver
: 安裝 Protractor 所需的驅動Bower, Http-Server, Karma 和 Protractor 模塊同時也是可執行程序, 能夠全局安裝並從命令行直接運行。 在本教程中你不用去全局安裝這些程序,但若是確實須要全局安裝,可使用 sudo npm install -g ...
命令。
例如,你能夠這樣安裝 Bower 命令行工具:
sudo npm install -g bower
(在 Windows 下忽略 sudo)
而後你就能夠直接運行 Bower 程序了:
bower install
儘管 Angular 應用是純客戶端代碼,也能夠直接從文件系統中打開瀏覽器查看,但最好仍是從 HTTP web 服務器中打開。尤爲是出於安全考慮,對於直接從文件系統中打開的頁面,大多數現代瀏覽器都不容許 javascript 直接發送請求到服務器。
angular-phonecat 配置了一個簡單的開發服務器。經過下面的命令打開服務器:
npm start
這會建立一個服務器監聽 8000 端口。你能夠打開 http://localhost:8000/index.html 來查看應用。
要指定不一樣的IP和端口, 編輯 package.json
中的 "start" 腳本。 你可使用 -a
選項來指定地址, -p
選項來指定端口。你須要同時更新 e2e-test/protractor.conf.js
中的 baseUrl
配置項。
咱們使用單元測試來確保 JavaScript 代碼在應用中正常運行。單元測試專一於測試應用獨立的小單元。單元測試文件 (specs) 應該和應用文件放在一塊兒。 這樣能夠便於查找文件,並在應用更新時同步更新它們。同時也使得改變應用結構更加容易,由於測試文件和代碼一塊兒移動。
angular-phonecat 項目使用 Karma 來運行單元測試。 經過如下命令來啓動 Karma :
npm test
這會啓動 Karma 單元測運行器。 Karma 會讀取項目根目錄。 karma.conf.js
文件。配置文。包括瞭如下內容。
建議始終在後臺運行單元測試。這樣,你在修改代碼時能夠當即得到單元測試反饋。
咱們使用 E2E (end-to-end) 測試來確保應用按照預期的方式來運行。 E2E 測試用於測試客戶端應用,尤爲是視圖的正確顯示和響應。它經過模擬真實用戶行爲來測試應用。
E2E 測試用例放在 e2e-tests
目錄下面。
angular-phonecat 項目使用 Protractor 運行 E2E 測試。Protractor 依賴於一系列驅動來與瀏覽器交互。 經過下面的命令來安裝這些驅動:
npm run update-webdriver
你沒必要手動來運行這些命令。 npm 腳本在運行測試時會自動執行這些命令。
因爲 Protractor 要與正在運行的應用進行交互,咱們須要啓動服務器:
npm start
而後,在另外一個終端窗口中運行 Protractor 測試腳本:
npm run protractor
Protractor 會讀取 e2e-tests/protractor.conf.js
文件。 配置文件的做用是:
一般在視圖改變,或須要測試整個應用時運行 E2E 測試。當你肯定要提交變動到遠程倉庫時,也應該運行測試。
防火牆/代理問題
Git 和其餘工具常用 git:
協議來從遠程倉庫獲取文件。一些防火牆配置阻擋了 git://
地址,這經常到致使下載倉庫和依賴時出錯 (例如,企業防火牆就常常阻擋 git:
)
若是碰到這種狀況,能夠強制使用 https:
協議。只須要使用以下命令: git config --global url."https://".insteadOf git://
升級 WebDriver 耗時太長
運行 update-webdriver
可能要花上幾秒到幾分鐘的時間(取決於你的硬件配置和網絡環境)。若是你取消了操做(好比用 Ctrl+C
),可能在稍後運行 Protractor 時出錯。
若是碰到這種狀況,能夠刪除 node_modules/
目錄並從新運行 npm install
。
Protractor 依賴
當下,Protractor 使用了 Selenium Standalone Server,這依賴於本地安裝的 Java Development Kit (JDK) 。 能夠經過 java -version
命令來檢查是否已安裝 JDK。
若是 JDK 未安裝,能夠從 這裏 獲取。
服務器運行錯誤
web 服務器使用了 8000 端口。 若是該端口已經被佔用(好比被其餘的 web 服務器佔用) ,可能出現 EADDRINUSE
錯誤。 在運行 npm start
以前,請確保該端口可用。
設置好了本地環境, 能夠開始下一步: Step 0 - 啓動