一、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、資料綁定
- 單向資料綁定
模型變化過後,自動同步到界面上;
一般純展示型的資料會用到單項資料綁定;
使用表達式的方式都是單向的
- 雙向資料綁定
兩個方向的資料自動同步:
模型發生變化自動同步到視圖上;
視圖上的資料發生變化過後自動同步到模型上;