一、初識AngularJS 1、AngularJS概念
[ 1 ] AngularJS的官方文檔是這樣介紹它的。完全使用JavaScript編寫的用戶端技術。同其他曆史悠久的Web技術(HTML、CSS和JavaScript)配合使用,使Web應用開發比以往更簡單、更快捷。
[ 2 ] AngularJS主要用於構建單頁面Web應用。它通過增加開發人員和常見Web應用開發工作單位之間的抽象層級,使構建互動現代Web應用變得更加簡單。
[ 3 ] AngularJS的Team Dev將其描述為一種構建動態Web應用的結構化架構。
2、所用模型 AngularJS則通過原生的Model-View-Controller(MVC,模型視圖控制器)功能增強了 HTML。結果表明,這個選擇可以快捷和愉悅地構建出令人印象深刻並且極富表現力的用戶端應用。
3、AngularJS檔案大小 AngularJS團隊非常重視架構檔案壓縮後的大小,這樣使用它就不會付出太多的額外代價(寫作本書時,檔案壓縮後的體積在90KB左右)
4、許可
AngularJS的源碼託管在GitHub上,可以免費擷取。它基於MIT許可發布,這意味著你可以為AngularJS貢獻代碼,使其變得更加優秀。
二、資料繫結和第一個AngularJS Web應用 1、Hello World-資料繫結
已將https://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular.js下載到本地
<!DOCTYPE html><html ng-app> <head> <script src="js/angular.js"></script> </head> <body> <div ng-controller="MyController"> <h1>Hello {{ clock }}!</h1> </div> <script type="text/javascript" src="js/app.js"></script> </body></html>
apps.js代碼如下:
angular.module('myApp',[]) .run(function($rootScope){ $rootScope.name="Joyce";});
2、AngularJS中的資料繫結 [ 1 ] AngularJS建立即時模板來代替視圖,而不是將資料合併進模板之後更新DOM。任何一個獨立視圖組件中的值都是動態替換的。
[ 2 ] 實現上述功能,只需明確設定ng-app屬性,ng-app屬性聲明所有被其包含的內容都屬於這個AngularJS應用,只有被具有ng-app屬性的DOM元素包含的元素才會受AngularJS影響。
[ 3 ] 自動資料繫結使我們可以將視圖理解為模型狀態的映射。當用戶端的資料模型發生變化時, 視圖就能反映出這些變化,並且不需要寫任何自訂的代碼,它就可以工作。
[ 4 ] AngularJS會記錄資料模型所包含的資料在任何特定時間點的值而不是原始值。 當AngularJS認為某個值可能發生變化時,它會運行自己的事件迴圈來檢查這個值是否變 “髒”。如果該值從上次事件迴圈運行之後發生了變化,則該值被認為是“髒”值。這也是Angular可以跟蹤和響應應用變化的方式。這個過程被稱作髒檢查(dirty checking)。髒檢查是檢查資料模型變化的有效手段.當有潛在的變化存在時,AngularJS會在事件迴圈時執行髒檢查來保證資料的一 致性。
對比:如果使用KnockoutJS這種通過在資料模型上綁定事件監聽器來監聽資料變化的架構,這個過程會變得更複雜且低效。處理事件彙總、依賴跟蹤和大量的事件觸發(event firing)是非常複雜的,而且會在效能方面導致額外的問題。
3、資料繫結最佳實務
<!DOCTYPE html><html ng-app> <head> <script src="js/angular.js"></script> </head> <body> <div ng-controller="MyController"> <h1>Hello {{ clock }}!</h1> </div> <script type="text/javascript" src="js/app.js"></script> </body></html>
app.js代碼如下:
function MyController($scope, $timeout) { var updateClock = function() { $scope.clock = new Date(); $timeout(function() { updateClock(); }, 1000); }; updateClock();};