AngularJS開發下一代Web應用筆記(一)


一、寫在最前

 

 

 

 

 

 

AngularJS是Google推出的一款Web應用開發框架。它提供了一系列兼容性良好並且可擴展的服務,包括數據綁定、DOM操作、MVC設計模式和模塊加載等。

現在網上JS框架茫茫多,真不知道是到底要學習什么框架,學習了這個框架,說不定還沒用在項目,又有更好的js框架出來了。前端就是不斷折騰新東西,生命在於折騰~

是的,這么多的前端框架,是不是真的都要學習??答案當然不是,看所要完成的項目。這是帶我的前端前輩告訴我,具體使用什么框架還是不用框架,

看項目需求,一切都以按時按質完成作為選擇的標准。但是新的東西要學習,不學習就落后。

二、AngularJS的幾個重要概念有什么

客戶端模板   舉個栗子:hello.html

模型/視圖/控制器(MVC)

數據綁定

依賴注入

路由管理

指令(Angular的靈魂)

示例:購物車(源碼在最后

三、對這些概念的理解  

插個曲,Angular最適合用來做單頁web應用。在百度上查了單頁web應用的概念。如表:

單頁web應用(qq音樂)

單頁Web應用(single page web application,SPA),就是只有一張Web頁面的應用。

單頁應用程序 (SPA) 是加載單個HTML 頁面並在用戶與應用程序交互時動態更新該頁面的Web應用程序。

瀏覽器一開始會加載必需的HTML、CSS和JavaScript,所有的操作都在這張頁面上完成,都由JavaScript來控制。因此,對單頁應用來說模塊化的開發和設計顯得相當重要。

優點:
1).良好的交互體驗(用戶不需要重新曬新頁面,獲取數據都是通過ajax異步獲取)
2).良好的前后端分離
3).減輕服務器壓力(服務器只用出數據, 不用管展示邏輯和頁面合成,吞吐能力會提高幾倍)
4)..共用一套后端程序代碼(不用修改后端程序代碼就可以同時用於Web界面、手機、平板等多種客戶端)
缺點:
1).SEO難度較高
2).前進、后退管理( 所有的頁面切換需要自己建立堆棧管理)
3).初次加載耗時多(代碼合並、CDN)

像游戲開發,頻繁操作DOM也不適合使用Angular
 
客戶端模板  
多頁面 單頁面
通過裝配和鏈接服務器上數據來創建HTML,然后將構建好的HTML頁面發送到瀏覽器。 Angular將模板和數據推送到瀏覽器中裝配他們,然后服務器角色只是為模板提供靜態資源以及為模板提供數據
 
 
模型/視圖/控制器(MVC)  

代碼中清晰的分離數據管理 (模型 )

及給用戶呈現數據 (視圖 )

C  應用程序邏輯 (控制器 )

Angular中的
M  模型中的數據便是存儲在對象中的屬性 (屬性值
V   文檔對象模型 (DOM)
C   控制器是 JavaScript
 
C和V之間的紐帶就是$scope
 
 
數據綁定 雙向綁定
ng-model 所謂的雙向綁定,無非是從界面的操作能實時反映到數據,數據的變更能實時展現到界面。
 
 
依賴注入 舉個栗子
程序運行過程中,如需另一個對象協作(調用它的方法、訪問他的屬性)時,無須在代碼中創建被調用者,而是依賴於外部容器的注入


在HelloController控制器中,$scope對象會把數據綁定自動傳遞給我們;我們不需要通過調用任何函數來創建他。只是通過將他防止在控制器的構造器中來請求它。

 
 
控制器helloController單詞首字母大寫
數據綁定  
該過程,沒有在輸入字段上注冊一個改變值的事件監聽器。
 
 
指令 Angular之可以可以編寫模板如HTML一樣,是因為框架核心包含了一個強大的DOM解析引擎。
擴展指令 例如:ng-controller。在HTML模板看到不屬於HTML規范的新屬性,這稱為HTML擴展指令
自定義指令  自己定義自己需要的指令(據說指令是Angular的靈魂)
 
 
附購物車源碼:
 
<!DOCTYPE html>
<html ng-app>
<head>
    <meta charset="UTF-8">
    <title>購物車</title>
    
</head>
<body ng-controller="CartController">
    <h1>Your order</h1>
    <div ng-repeat="item in items">
        <span>{{item.title}}</span>
        <input ng-model="item.quantity">
        <span>{{item.price | currency}}</span>
        <span>{{item.price * item.quantity | currency}}</span>
        <button ng-click="remove($index)">Remove</button>
    </div>

</body>
<script src="../assets/js/angular-1.3.0.js"></script>
<script>
function CartController($scope){

    // currency是過濾器,用來轉換文本

    // $index參數   包含了它在ng-repeat的索引值

    //splice()   arrayObject.splice(index,howmany,item1,.....,itemX)

    // 定義一個一維數組存放對象
    $scope.items = [
        {title: 'Paint pots',quantity:8,price:3.95},
        {title: 'Polka dots',quantity:17,price:12.95},
        {title: 'Pebbles',quantity:5,price:6.95}
    ];

    $scope.remove = function(index){
        $scope.items.splice(index,1);
    }

}
</script>
</html>
View Code

 

 運行后結果:
 
 
 
 
 
 
 
 
 
 
 
自定義指令的圖解:
 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM