Angular JS

一 angular.js 和之前的js 框架有的區別:
    1 傳統的前端開發思惟:
       以jquery 爲例,它是以dom 爲中心的,是dom 元素的操做,更多的是關注dom 的變化和用戶的操做。
    2 新一代的前端開發思惟
       以angular.js 爲例,它是以data 爲中心的,關心的是數據的變化。
   好比若是要實現一個三級聯動的下拉框:javascript



jquery 的實現是:前端

1 分別監聽省市縣的下拉框的change 事件。
2 在事件中,根據當前的值來實現下級的聯動。
3 查詢符合上級的下級數據。
4 如此循環 更新下級的下級。
代碼量估計得有一百行左右吧。java

angular.js 的實現是:jquery

1 定義上級的數據源和model。
2 定義下級的數據源的model。
3 定義下下級的數據源和model。
4 在$watch 中更新model 便可。bootstrap

代碼量 十行搞定。瀏覽器

再好比要實現一個表格(分頁,排序,過濾,編輯):網絡


jquery 的實現思路 :app

1 獲取數值。
2 根據返回的值,來進行dom 的操做。
3 動態生成一些控件,而後綁定控件的事件。
4 在事件裏面再進行dom 的操做以及數據的交互。
這個代碼量應該也很多。框架

angular.js 實現思路:dom

1 ngRepeat渲染
2 filter過濾器過濾
3 orderBy排序
4 paging分頁

代碼量幾十行左右。

若是寫慣了jquery 代碼的話再寫angualr.js 的話會有一點不適應。可是熟悉以後會感受很是的爽。angular.js 除了Directive以外其餘地方絕對不能使用dom 操做,切記。

二 理解angular.js 框架

如圖所示爲 angular.js 啓動過程:

1 瀏覽器載入HTML,解析成DOM。
2 加載Angular類庫。
3 DOMContentLoaded事件中開始bootstrap。
4 尋找 ng-app, 注入服務。
5 編譯DOM並連接到對於的scope數據。

angular.js 執行過程:

1 瀏覽器等待用戶事件觸發(用戶交互,定時器,網絡事件)。
2 瀏覽器執行事件回調,進入Javascript上下文。
3 Angular在$apply中接管了JS的執行部分。
4 Angular進入$digest循環。
5 Angular進行髒數據檢查。
6 批量更新DOM,$digest結束。
7 瀏覽器開始渲染。

以以下代碼爲例 :

複製代碼
 1 <div ng-app="mymodule">
 2     <div ng-controller="mycontroller">
 3         <input ng-model="name"/>
 4         <p>{{name}}</p>
 5     </div>
 6 </div>
 7 
 8 <script src="~/Scripts/angular.min.js"></script>
 9 <script type="text/javascript">
10 
11     var mymodule = angular.module('mymodule', []);
12 
13     mymodule.controller('mycontroller', function ($scope) {
14 
15         $scope.name = "hello angular";
16 
17     });
18 
19 </script>
複製代碼

編譯期
1 解析ng-model併爲input綁定key事件。
2 爲{{name}}創建$watch表達式,進行監聽。

執行期1 用戶在input輸入按鍵,觸發了瀏覽器的key事件。2 事件回調, 進入Javascript上下文。3 angular接管,在$apply中修改scope的name取值。4 觸發$digest流程。5 髒數據檢測,發現$watch列表中的name值變動。6 通知對應的處理函數, 更新DOM。7 Angular退出執行上下文,退出Javascript的事件處理函數。

相關文章
相關標籤/搜索