AngularJS 是一個前端的以Javascript為主的MVC框架。與AngularJS相類似的還有EmberJS。
隨着時代在進步,各種各樣的開發理念與開發框架不斷的提出與發展,而就目前來說,除了游戲、IM(類似QQ)、Office這類軟件之外,新出的軟件應用開始出現兩個方向,一個是以Web為主的Web APP,一個是以移動端為主的移動APP。且,現有也有一種聲音認為Web APP早晚會取代移動端原生APP,從而一統計算機軟件的應用方式。暫且不論這種說法是否會成為現實,Web APP的火爆可見一斑。
三年前,我編寫的Web軟件,還都是以后台為主,前台頂多用一下jQuery來進行幾個簡單的動態效果。兩年前,我接觸ExtJS,知道還有這么一種Javascript框架能夠實現完整的UI訂制,從而只需要使用Ajax傳數據就可以了。
現在(實際上已經出來很長時間了),我了解到EmberJS以及AngularJS這種將前端的UI構建過程拆分為之前只在后端使用過的MVC的模式。從另一個角度說,現在是把原先的MVC中的V再度拆分一個MVC的應用。
所以,我認為,無論從哪個角度來考慮,單獨的將Angular提出來,進行思考和學習是很有必要的。
AngularJS是什么?
AngularJS是一個由Google支持的Web App前端MVC框架。
AngularJS包括什么?
從AngularJS的官方文檔中看到,它主要包括如下幾個概念:
- Template —— 模板
- Directive —— 指令
- Filter —— 過濾器
- Controller —— 控制器
- Scope —— 范圍
- Service —— 服務
- Module —— 模塊
Template Directive Filter這三個主要與“視圖”有關。 Controller Scope Service這兩個主要與“控制器有關”。 Module用於結構化項目。
注意:就像上面看到的那樣,在AngularJS中,沒有找到有關Model層的東西!
下面是對各個概念的理解以及如何應用的想法。
- Directive是一種屬性,寫在HTML標簽當中,用戶標識出模板中一些特殊的東西。比如用於顯示“部分模板”的
<div ng-view></div>
。 - Filter根據官網的解釋,是用於控制視圖中的元素如何顯示,或者說顯示成什么樣的。
- Template是視圖層的具體載體,在Template中可以寫一些輔助的邏輯,如ng-if等
- Controller是控制器,根據官方文檔的建議,不應該在Controller中寫太復雜的東東,在控制器中只寫有關業務邏輯的就可以了。
- Scope,這個東西在看控制器的介紹的時候看到,在個人理解來看,應該是主要用於進行視圖與控制器的數據操作,或者認為是用於打通視圖層與控制器的一個東東。
- 由於文檔中寫到,不建議在控制器中寫太復雜的邏輯,所以我們應該把所有的可供復用的邏輯寫到Service(服務)當中。然后我們可以利用AngularJS框架本身的DI(依賴注入)功能將Service注入到具體的控制器中。
- Module,這個東西類似Java的類庫的概念,我們寫的所有的控制器、過濾器、服務等都得加到Module中,沒什么好說的~
這里要注意一個問題——模型。
按照個人的理解,不論AngularJS再怎樣,其數據的直接來源還是服務器,而服務器傳數據的話,現在比較流行使用JSON格式,所以,就模型層來說,我們只要利用Service從服務器中獲取數據,然后將其解析給在Controller中對應的Scope就行了。剩下的就是AngularJS內部處理,將數據自動綁定到前台了~
參考: