天天看點

第214天:Angular 基礎概念

一、Angular 簡介

1、 什麼是 AngularJS

- 一款非常優秀的前端進階 JS 架構

- 最早由 Misko Hevery 等人建立

- 2009 年被 Google 公式收購,用于其多款産品

- 目前有一個全職的開發團隊繼續開發和維護這個庫

- 有了這一類架構就可以輕松建構 SPA 應用程式

- 輕松建構 SPA(單一頁面應用程式)

- 單一頁面應用程式:

  + 隻有一個頁面(整個應用的一個載體)

  + 内容全部是由AJAX方式呈現出啦的

- 其核心就是通過指令擴充了 HTML,通過表達式綁定資料到 HTML。

2、為什麼使用 AngularJS

- 更少的代碼,實作更強勁的功能

- 将一些以前在背景開發中使用的思想帶入前端開發

- 帶領目前市面上的架構走向模式化或者架構化

3、AngularJS 的核心特性

- MVC

- 子產品化

- 自動化雙向資料綁定

- 指令系統

4、相關連結

- http://www.apjs.net/

- http://www.angularjs.cn/

- http://docs.angularjs.cn/api

- https://material.angularjs.org

- http://angular-ui.github.io/

5、Angular 上手

- 安裝 Angular

(1)下載下傳 Angular.js 的包

  + https://github.com/angular/angular.js/releases

(2)使用 CDN 上的 Angular.js

  + http://apps.bdimg.com/libs/angular.js/1.4.9/angular.min.js

(3)使用 Bower 安裝

  ```bash

  bower install angular

  ```

(4)使用 NPM 安裝

  npm install angular

- 每種方式安裝包,本質都是将angular的庫下載下傳到目前檔案夾中

6、angular的優勢

  • Angular 最大程度的減少了頁面上的 DOM 操作;
  • 讓 JavaScript 中專注業務邏輯的代碼;
  • 通過簡單的指令結合頁面結構與邏輯資料;
  • 通過自定義指令實作元件化程式設計;
  • 代碼結構更合理;
  • 維護成本更低;
  • Angular 解放了傳統 JavaScript 中頻繁的 DOM 操作

7、angular中最重要的概念是指令(directive)

- ng-model 是雙向資料綁定的指令,效果就是将目前元素的value屬性和模型中的user.name建立綁定關系

8、運作官方文檔

由于衆所周知的原因,Angular 官網打不開

我們需要本地運作 Angular 文檔

下載下傳最新的 Angular 包

解壓後有一個 docs 檔案夾

必須通過 http 伺服器通路該檔案夾

可以通過 SublimeServer 或者 http-server 運作

9、推薦工具

- 線上編輯器

  + https://jsfiddle.net/

二、 Angular 基礎概念

 1、MVC 思想

- 将應用程式的組成劃分為三個部分:Model View Controller

模型:處理資料和業務邏輯

視圖:以友好的方式向使用者展示資料

控制器:組織排程相應的處理模型

- 控制器的作用就是初始化模型用的;

- 模型就是用于存儲資料的

- 視圖用于展現資料

- 登陸案例分析MVC思想

- 模型

  + 我們資料庫中所有使用者的資訊

  + 接受控制器傳來的使用者名和密碼進行校驗的業務邏輯并傳回true/false

- 控制器

  + 接受使用者在界面上填寫的使用者名和密碼

  + 将使用者名和密碼交給模型

- 視圖

  + 給使用者呈現一個表單

  + 接受使用者輸入内容,并将其送出給控制器

  + 根據控制器傳回的資料,響應使用者頁面

2、子產品(Module)

AngularJS很重要的一個特性就是實作子產品化程式設計,我們可以通過以下方式建立一個子產品,對頁面進行功能業務上的劃分

1 // 建立一個名字叫MyApp的子產品,第二個參數指的是該子產品依賴那些子產品
2 
3 var myApp = angular.module("MyApp", []);      

也可以将重複使用的指令或過濾器之類的做成子產品便于複用

注意必須指定第二個參數,否則變成找到已經定義的子產品

3、控制器(Controller)

排程邏輯的集合

1 angular.module('OneApp', [])
 2 
 3     .controller('HelloController', [
 4 
 5         '$scope',
 6 
 7         function($scope) {
 8 
 9             $scope.p = {
10 
11                 name: 'zhangsan'
12 
13             };
14 
15         }
16 
17     ]);      

控制器的三種主要職責:

  • 為應用中的模型設定初始狀态
  • 通過$scope對象把資料模型或函數行為暴露給視圖
  • 監視模型的變化,做出相應的動作

// 監視購物車内容變化,計算最新結果

$scope.$watch(‘totalCart’, calculateDiscount);      

$scope(上下文模型)

  • 視圖和控制器之間的橋梁
  • 用于在視圖和控制器之間傳遞資料
  • 利用$scope暴露資料模型(資料,行為)

4、表達式(Expression)

作用:

使用 表達式 把資料綁定到 HTML。

文法:

表達式寫在雙大括号内:{{ expression }}。

比較:

表達式作用類似于ng-bind指令

建議更多的使用指令

AngularJS表達式很像JavaScript表達式

它們可以包含文字、運算符和變量

如 {{ 5 + 5 }} 或 {{ firstName + ‘-’ + lastName }}

對比 JavaScript 表達式

相同點:

AngularJS 表達式可以包含字母,操作符,變量。

不同點:

AngularJS 表達式可以寫在 HTML 中。

AngularJS 表達式不支援條件判斷,循環及異常。

AngularJS 表達式支援過濾器。

5、資料綁定

  • 單向資料綁定

    模型變化過後,自動同步到界面上;

    一般純展示型的資料會用到單項資料綁定;

    使用表達式的方式都是單向的

  • 雙向資料綁定

    兩個方向的資料自動同步:

    模型發生變化自動同步到視圖上;

    視圖上的資料發生變化過後自動同步到模型上;