1.앵귤러 개념들

  • AngularJS Document(https://docs.angularjs.org/guide/concepts)

- Directives: 커스텀 속성과 요소들로 확장된 HTML

- Expressions: 스코프에서 변수와 함수에 접근, 중괄호 두 개로 표현

<!--variable 변수의 값을 출력-->
<h1>  
    <!---->
</h1>

- Module: 거대한 컨테이너로 Directives, Controller 등이 들어있다

- Controller: View의 비즈니스 로직을 다룰 때만 사용

- Service: 재사용할 수 있는 비즈니스 로직(Controller는 재사용 불가)

2. 개발해 보기

  • 플런커(https://plnkr.co) 접속
  • [New] -> [AngularJS] 선택

image-20220707190608600

  • AngularJS를 이용해 개발할 수 있다

image-20220707190910265

  • CDN을 이용해 angularJS 와 bootstrap 삽입

  <head>
    <!--angularJS CDN 삽입-->
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>

    <!--bootstrap CDN 삽입-->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"/>
  </head>
  • ng-app: 선언된 부분부터 angular를 사용한다는 뜻 -> 해당 태그 범위 내에서 angular 디렉티브를 찾는다

  • ng-init: javaScript 변수 혹은 함수를 초기화

  <!--javaScript변수 name에 Chris를 입력 후 Expressions을 통해 출력 출력-->
  <body ng-app ng-init="name = 'Chris'">
    <h1>
      <!---->
    </h1>
  </body>

  <!--Chris가 출력된다-->
  • angular.module(‘모듈명’, 배열);

- 모듈을 정의한다

(function(){
  var app = angular.module('todo',[]); //todo라는 모듈을 정의
})();
<!--ng-app에 모듈명 입력-->
<body ng-app="todo" ng-init="name = 'Chris'">
  • 모듈.controller(‘컨트롤러명’, [‘$scope’, function($scope){ }]);

- 컨트롤러를 정의한다

- $scope: 컨트롤러와 html 파일을 연결해주는 역할

app.controller('TodoCtrl', ['$scope', function($scope){   
    $scope.name = 'Chris'; //변수에 값 넣기
}]);
<!--ng-controller에 컨트롤러명 입력-->
<body ng-app="todo" ng-controller="TodoCtrl">
  • 실습: Todo만들기
//script.js
import angular from 'angular'; //CDN으로 삽입한 angular가 작동 안 해서 삽입

(function(){
  var app = angular.module('todo',[]); //todo라는 모듈을 정의

  app.controller('TodoCtrl', ['$scope', function($scope){   
    
    //todo 객체 만들기
    $scope.todo = {
      title: '요가수련',
      complete: false,
      createdAt: Date.now()
    }
    
  }]);
})();
<!-- index.html -->
<!DOCTYPE html>

<html>
  <head>
    <link rel="stylesheet" href="lib/style.css" />
    <script src="lib/script.js"></script>

    <!--angularJS CDN 삽입
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
    -->

    <!--bootstrap CDN 삽입-->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"/>
  </head>

  <!--변수를 출력-->
  <body ng-app="todo" ng-controller="TodoCtrl">
    <h1>Todo만들기</h1>
    <h3>제목: </h3>
    <input type="text" ng-model="todo.title"/>
    <input type="checkbox" ng-model="todo.complete"> <br>
    <date>날짜: </date> <br><br>

    <h3>Todo객체</h3>
    
    
  </body>
</html>
  • 결과 화면

image-20220708183818244

참고

  • https://www.youtube.com/watch?v=EklH54kysps&list=PLs_XsVQJKaBk_JN5RctLmmVrGwEzpzqaj