ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AngularJS] 3. AngularJS 부트스트랩(Bootstrap) - AngularJS 강좌
    Web/AngularJS 2016. 1. 15. 16:52

    AngularJS 부트스트랩(Bootstrap)




     1. ng-app 지시자를 이용한 부트스트랩

      AngularJS 웹 app이 되는 조건은 단순히 Script 태그로 angular.js 파일을 로드하는 것으로 충족되는 것이 아닙니다. 특정 태그에 ng-app 속성을 추가해서 AngularJS 부트스트랩을 적용해야 합니다.


      아래 예제는 간단한 AngularJS 웹 app 예제입니다.



     * simpleajs.html


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <!DOCTYPE html>
    <html ng-app>
        <head>
            <meta charset="UTF-8"/>
            <script src="libs/Angular/angular.js"></script>
            <title>Simple Angular JS App</title>
        </head>
        <body ng-init="name='AngularJS'">
            <h1>Hello {{name}} world !</h1>
        </body>
    </html>
    cs




     







      ng-app은 AngularJS 웹 app의 범위를 제한하는 지시자이자 제한자입니다. ng-app 지시자를 추가한 노드가 루트 노드가 되어 하위 노드들은 AngularJS의 기능을 사용할 수 있게 됩니다.


      한 가지 주의할 점은 Java 나 C의 main 과 마찬가지로, ng-app 지시자는 딱 한 번만 나와야 합니다. 아래 예제를 봅시다.



    1
    2
    3
    4
    5
    6
    <div ng-app>
        <h1>{{1+2}}</h1>
    </div>
    <div>
        {{1+2}}
    </div>
    cs




      위 예제에서 ng-app 지시자가 들어간 div 태그에서는 3을 출력하고, 아래 div 태그는 {{1+2}}를 그대로 출력하게 됩니다. 즉, AngularJS 표현식을 인식하지 않는 영역으로 html을 출력하게 되는 겁니다.


      그렇다면 ng-app을 추가하면 웹에서 어떻게 처리하는지 알아보도록 하겠습니다. 


      AngularJS의 부트스트랩핑 과정은 아래와 같습니다.

      1. ng-app에 값으로 주어진 모듈을 로드

      2. app에 유일한 injector를 생성

      3. ng-app 지시자가 적용된 정적 DOM을 루트로 하여 컴파일, 컴파일 시 $rootScope를 전달하고 정적 DOM에 AngularJS를 적용되어 동적 DOM이 만들어지면 브라우저가 렌더링하여 뷰를 출력



      다음 그림은 부트스트랩핑 과정에 대해 설명한 그림입니다.



    [출처: AngularJS Doc]







     2. 자바스크립트 API를 이용한 부트스트랩

      앞에서 본 바와 같이 ng-app 지시자를 이용하면 AngularJS가 자동으로 부트스트랩됩니다. 다른 방법으로 수동으로 AngularJS를 부트스트랩할 수 있는 API를 자바스크립트가 제공합니다.



    1
    2
    angular.bootstrap(DOM Object)
     
    cs


      

      예시로 만든 html 문서가 있고, 이 중에서 app1만 부트스트랩을 적용하는 예제입니다.



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <div id="app1">
        {{1+2}}
    </div>
    <div id="app2">
        {{3+4}}
    </div>
     
    <script>
        angular.element(document).ready(function() {
            angular.bootstrap(document.getElementById('app1'));
        });
    </script>
    cs




      수동으로 부트스트랩하면 자동으로 부트스트랩할 때와 달리 하나의 페이지에 여러 개의 DOM을 부트스트랩할 수 있습니다. 또한, angular.bootstrap 메소드는 여러번 부트스트랩을 적용할 수 있습니다.


      이와 같이 한 페이지에서 서로 다른 AngularJS 웹 app을 만들고자 할 때 사용하거나 DOMContentLoaded 이벤트가 발생한 시점이 아닌 별도의 시점에서 AngularJS를 부트스트랩할 때 사용할 수 있습니다.








    * 이 포스팅은 '시작하세요! AngularJS 프로그래밍'을 바탕으로 작성하였습니다.


    댓글

Designed by Tistory.