2014年6月21日 星期六

AngularJS 教學 - 第一個AngularJS App

AngularJS 是一套Google推出的前端開發框架,他能夠讓開發者擴展應用程式中的HTML標籤

並提供了良好的MVC設計方式以及模板系統,甚至還有依賴注入的系統,但其缺點在於對

視圖的元件支援度不夠強 (並非像ExtJS或JQueryUI 有提供自身的視圖元件)

講到 AngularJS 入門,接下來用一個範例來說明一個最簡的AngularJS包含什麼!


首先到 https://angularjs.org/ 下載最新的版本的AngularJS 函式庫














畫面會帶出一個視窗,你可以在Build那邊選擇要壓縮過後的還是沒壓縮的或是ZIP檔都可

如果你是下載ZIP檔的話,在解壓縮之後就可以把 angular.js 或是 angular.min.js 載入到HTML了


<script type="text/javascript" src="js/angular.min.js"></script>

接著就來看看要如何應用 AngularJS 到你的程式了:

1.  加入 ng-app 屬性到 html 標籤中
   <html ng-app="demoApp">
          
2.  建立一個 AngularJS module
     <script>
       var demoApp = angular.module("demoApp", []);
   </script>

在第一個步驟中,我們加入了一個 ng-app 屬性到 html標籤中,

ng-app 的目的是告訴 AngularJS 從 html 標籤以下都需要經過 AngularJS的編譯(compiled)與處理(processed),而 ng-app 就是表示一個應用程式所在的範圍

上面範例中我指定了 ng-app 屬性值為 "demoApp",是告訴 AngularJS 我將 demoApp 這個模組應用在這個 html 標籤以下,

因此在第二步驟中就必須透過 angular.module 建立一個 demoApp 模組,

而在AngularJS的編譯過程中,會加載 demoApp 底下所有的依賴的模組,

並初始化這個 demoApp 底下的所有 AngularJS 物件(Ex: $rootScope...),

需要注意的是

  • 一個 HTML 網頁只能有一個 ng-app
  • ng-app 不一定要擺在 html 標籤中


接著在 body 標籤中 加入一行 AngularJS 的 Expression

{{'HelloWorld'}}

首先 AngularJS 的 Expression 是用兩個大括弧圍住 {{....}}

此行結果 會在頁面顯示出  HelloWorld 而不是 {{'HelloWorld'}}

其實 AngularJS 的 Expression 跟 JSP 的 Scriptlet 是類似道理了

他會在執行期間動態顯示 Expression 裡面的值,後續會在介紹AngularJS Expression

以下為全部的範例程式

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" ng-app="demoApp">
     <head>
         <title>Bootstrap Examples</title>
         <script type="text/javascript" src="js/angular.min.js"></script>
         <script>
              var demoApp = angular.module("demoApp", []);
         </script>
     </head>
     <body>
         {{'HelloWorld'}}
     </body>

</html>

最後如果想試看看 ng-app 的 scope 可以把程式改成如下:


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" >
     <head>
         <title>Bootstrap Examples</title>
         <script type="text/javascript" src="js/angular.min.js"></script>
         <script>
              var demoApp = angular.module("demoApp", []);
         </script>
     </head>
     <body>
         <div ng-app="demoApp">
              {{'HelloWorld'}}
         </div>
         {{'HelloWorld'}}
     </body>

</html>

你會發現第二個 AngularJS 的 Expression 並不會被AngularJS表達顯示出來

這是因為第二個 Expression並不被任何 AngularJS 應用所控管,因此在編譯之後

第二個 Expression 只會被認為是一個普通的 HTML 字樣而以。






沒有留言:

張貼留言