通過上一章的學習,我們現在已經成功的安裝了nodejs,并使用npm安裝了bower,同時,還學會了使用bower來下載angularjs。當然了,更重要的,我們還有一個超級厲害的工具:http-server,它使得我們可以在任何路徑中,提供http服務。
下面,讓我們使用它們來開發第一個程序。
## 建立文件
我們在任意位置新建一個文件夾做為我們本次開發的根目錄,然后打開`git bash`,使用cd命令進入這個文件夾下。
然后,我們新建第一個`index.html`文件:
~~~
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello Yunzhier</title>
</head>
<body>
Hello Yunzhier.
</body>
</html>
~~~
## 啟動http-server
如果此時,http-server還在另一個`git bash`中啟動,那么會報一個啟動錯誤:

這個原因,是由于http-server默認啟動在8080端口,由于在8080端口提供服務的只能有一個,所以產生了端口被占用的錯誤。解決的方法也很簡單,終止掉前面那個http-server就可以了,然后再重新啟動。
成功啟動后:


### 排錯
js的語法錯誤,會出現在`控制臺`:

未成功引用文件的網絡錯誤,會出現在`網絡`:

在這里,我們除了需要觀察name的顏色外,更多還需要注意status(狀態碼)。例如,如果有需要引入的文件未找到:
200 OK 成功

304 Not Modified 文件未修改 直接加載了緩存文件。

404 Not Found 頁面不存在

頁面不存在,大多是由于鏈接地址錯誤引起的,這時候,我們需要查看Request URL中的地址,是否是我們預期的地址,地址的書寫是否存在錯誤。
## 下載angularjs
下面,我們再打開一個git bash。然后在這個窗口中,使用bower來下載angularjs。
`bower install angularjs#1.5.7 `

成功下載后,目錄結構如下:
~~~
├── bower_components
│?? └── angular
│?? ├── LICENSE.md
│?? ├── README.md
│?? ├── angular-csp.css
│?? ├── angular.js
│?? ├── angular.min.js
│?? ├── angular.min.js.gzip
│?? ├── angular.min.js.map
│?? ├── bower.json
│?? ├── index.js
│?? └── package.json
└── index.html
~~~
我們需要引用的是`angular.js`,在程序開發時,我們推薦引入未壓縮的版本,這樣報錯看源代碼時,不至于凌亂,出現錯誤時,看出錯代碼的位置也會感覺更友好。
## 引用angularjs并使用
使用`<script src`引入angularjs后,我們對文件進行如下改寫:
`index.html`
~~~
- <html lang="en" >
+ <html lang="en" ng-app>
- Hello Yunzhier.
+ {{'Hi' + ' Yunzhier'}}
~~~
以后,我們的代碼修改,大多會以上述形式出現,`-`:刪除代碼;`+`:增加代碼。
保存后進行測試:

我們引入angularjs后,對文檔進行了兩處修改。
1. 在`html`標簽處增加了`ng-app`,意思是說`<html></html>`中的內容全部交給angularjs管理,規定了angularjs生效的邊界。當然了,我們還可以把它放到`<body>`標簽中。
2. 增加了``{{}}``,這是angularjs在html中輸出內容(數據綁定)的標準寫法。``{{}}``中可以放置js語句,也可以輸出后面我們要學到的變量。
`'Hi' + ' Yunzhier'`是js語句,意思是兩個字符串的拼接,我們還可以使用其它運算符,比如:
`3 * 5 = {{3*5}}`

`index.html`
~~~
<!DOCTYPE html>
<html lang="en" ng-app>
<head>
<meta charset="UTF-8">
<title>Hello Yunzhier</title>
<script src="bower_components/angular/angular.js"></script>
</head>
<body>
{{'Hi ' + 'Yunzhier'}}
</body>
</html>
~~~
為了更好的理解`ng-app`的作用,我們給出以下示例:
~~~
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>hello</title>
<script src="bower_components/angular/angular.js"></script>
</head>
<body>
<div ng-app>
{{2*5}}
<div>
{{3*8}}
</div>
</div>
<div>
{{2*5}}
</div>
</body>
</html>
~~~
我們將ng-app由html標簽中刪除,然后在BODY中增加兩個DIV,其中一個加入ng-app。
效果如下:

沒錯,正如我們上面講的,np-app規定了angularjs的邊界,邊界內的屬于angularjs管理,邊界外的就不屬于angularjs管理。
一般來講,我們會把html全部交給angularjs來管理。
【注意】:
在開發過程中,你需要首先進行以下設置,并保持控制臺處于打開狀態,以防止因文件緩存帶來的不必要的困擾。

- 前言
- 第一章:準備知識
- 第一節:GIT
- 第二節:Node.js
- 第三節:http-server
- 第四節:bower
- 第五節:firefox+chrome
- 第二章:官方示例教程
- 第零節:Hello Yunzhier
- 第一節:靜態模板
- 第二節:MVC
- 回調函數
- 第三節:組件
- 第四節:重構組件
- 2.4.1 調用組件
- 2.4.2 規劃目錄結構
- 2.4.3 剝離V層
- 2.4.4 大話測試
- 第五節:循環過濾器
- 第六節:雙向數據綁定
- 第七節:XHR與依賴注入
- 第八節:添加縮略圖
- 第九節:模擬頁面跳轉
- 2.9.1 使用bower
- 2.9.2 使用grunt
- 第十節:完善手機詳情頁
- 第十一節:自定義過濾器
- 第十二節:行為處理
- 第十三節:封裝請求
- 第十四節:應用動畫
- 第十五節:總結
- 第三章:菜譜管理示例
- 第四章:總結