AngularJS是谷歌開發維護的前端MVC框架,克服了HTML在構建應用上的不足,從而降低了開發的成本。
在學習AngularJS之前,有必要和之前學過的jQuery進行對比。jQuery是javascript的一個類庫(一系列函數的集合),而AngularJS是javascript的一個框架(一系列類庫的集合)。還有一點重要的區別是,jQuery是以DOM操作為核心,而AngularJS則是以數據和邏輯為核心,這是它們本質上的區別,類似的框架還有BackBone、KnockoutJS、Vue、React。
AngularJS有着諸多特性,最為核心的是:模塊化、雙向數據綁定、語義化標簽、依賴注入等等,這些我在后面的學習中也會,做相應的記錄。
那么在深入學習AngularJS之前,有必要來了解一下MVC模式的概念,以及它在AngularJS中的體現。
什么是MVC?
MVC其實就是一種開發模式,有模型(model)、視圖(view)、控制器(controller)3部分構成,采用這種方式為合理組織代碼提供了方便,降低了代碼間的耦合度,功能結構清晰可見。
- Model:一般用來處理數據,包括讀取和設置數據,一般指的是操作數據庫。
- View:一般用來展示數據,就是放數據,比如通過HTML來展示。
- Controller:因為一個模塊里面可能有多個視圖和模型,控制器就起到了連接模型和視圖的作用。
下面引用網上的一張圖片,清晰的說明了各部分的關系和作用。
在AngularJS中的體現
模塊化是AngularJS的重要特性之一,所謂模塊化,就是構建應用時,是以模塊的方式進行組織的,就類比搭積木。
一、首先定義應用,采用ng-app屬性指定一個應用,表示此標簽內所包裹的內容都屬於APP的一部分。
<html ng-app="App" lang="en">
二、定義模塊
AngularJS提供了一個全局對象angular,在此全局對象下提供了很多屬性和方法,其中的angular.module()方法用來定義一個模塊
//第一參數表示模塊的名稱,第二個參數表示此模塊依賴的其它模塊
var app = angular.module('app',[]);
其實應用就是一個很大的模塊。
三、定義控制器
控制器作為模型和視圖的橋梁,只要我們定義好了控制器,就相當於定義好了模型和視圖。
app.controller('StudentController',['$scope',function($scope){
//定義模型,這個$scope對象就相當於用來獲取數據的。
$scope.students = [
{name:'周傑倫',sex:'男',age:39}
];
}]);
控制器定義好了,但是要講模型上的數據展示到視圖上,就需要將控制器關聯到視圖上,通過為HTML標簽添加ng-controller屬性並賦值相應的控制器名稱,就確定了關聯關系。
<table ng-controller='StudentController'>
<tr><th>姓名</th><th>性別</th><th>年齡</th></tr>
<tr ng-repeat="student in students">
<td>{{student.name}}</td>
<td>{{student.sex}}</td>
<td>{{student.age}}</td>
</tr>
</table>
以上就是MVC模式在AngularJS中的體現了。