반응형
💡 Angular 프레임 워크로 특정한 기능을 구현할때 어떤 방식을 사용하는지 표 형식으로 정리하였는데 표에 설명하는내용이 Angular 프레임워크에서 제공되는 기능의 전부가 아니고 큰 그림을 보았을때 진행 순서로 보면된다.
표 보기전 참조
- 아래의 표현에서 어노테이션이라고 표현하는것은 (angular에서는 데코레이션이라고 표현됩니다.)
- 아래에서는 양방향 바인딩에 대해서 적혀있지만 Angular는 사실 양방향 바인딩을 지원하지 않는다고합니다 [( )] (banana in a box)에서 추측하면 양방향 바인딩은 이벤트 바인딩과 프로퍼티 바인딩의 축약표현일 뿐이므로 양방향 바인딩의 실제 동작은 이벤트 바인딩과 프로퍼티 바인딩의 조합으로 이루어지는 것일뿐이라고 합니다. (출처. 모던자바스크립트 저자 이웅모 블로그)
- 예시는 예시로 볼뿐이고 Angular.io에 starting 으로 연습해보시면 이해가 빠를것같습니다!
- 표는 'Yakov Fain, Anton Moiseev'저자의 Angular Devlopment with TypeScript를 참고하여 만들어 보았습니다!
작업 | 구현방식 |
업무 로직 구현 | 클래스를 사용한다. 클래스가 의존성으로주입되는 경우 Angular 프레임워크에서 인스턴스(객체)를 생성해서 해당 컴포넌트에 주입시킨다. |
UI 컴포넌트 구현 | 클래스에 @Component 어노테이션을 붙여서 생성한다. |
컴포넌트에 렌더링 될 HTML 템플릿 정의 | 인라인 HTML 코드를 사용할 때는 @Component 어노테이션에 template 항목을 사용하고, 외부 파일에서 불러올 때는 templateUrl을 사용한다 |
HTML 조작 | *ngIf 나 *NgFor과 같은 HTML 조작 디렉티브를 사용하거나 @Directive를 사용해서 별개의 클래스를 만든다.<br />(자바 진영에서 JSP를 사용해보셨으면 JSTL과 비슷하다고 생각하면 편할것 같습니다!) |
현재 객체에서 클래스 변수 참조 | this 키워드를 사용한다(ex: this.userName = "ISSAC";) |
단일 페이지 앱에서 내비게이션 구현 | 라우터(Router)를 사용해서 컴포넌트와 URL을 연결하고 컴포넌트의 템플릿이<router-outlet>태그로 지정한다. |
컴포넌트 프로퍼티를 UI에 표시 | 템플릿의 이중 중괄호 안에 클래스 프로퍼티를 사용한다( ex: {{customerName}} ) |
컴포넌트 프로퍼티를 UI와 바인딩 | 대괄호를 사용해서 프로퍼티를 바인딩한다. ( ex : <input [value] = " binding"> ) |
UI 이벤트 처리 | 이벤트의 이름을 괄호로 감싸고 핸들러를 지정한다. ( ex: <button (click)="onClickEvent()"> Get Products </button>) |
양방향 바인딩 | [( )] 표기를 사용한다( ex : <input [( ngModel)] = "myComponentProperty"/>) |
컴포넌트에 데이터 전달하기 | 컴포넌트 프로퍼티를 선언할 때에는 @Input 어노테이션을 사용하여 외부에 값과 연결한다. |
컴포넌트에서 데이터 받기 | 컴포넌트 프로퍼티를 선언할 때 @Output 어노 테이션을 사용하여 EventEmitter를 이용해서 이벤트를 발생시킨다. |
HTTP 요청 | 컴포넌트에 Http 객체를 주입하고 HTTP 함수를 사용한다. (ex : this.http.get('products') ) |
HTTP 응답처리 | subscribe() 함수를 사용해서 옵저버블 스트림을 처리한다.(ex : this.http.get('products').subscribe(---); ) |
HTML 일부를 자식 컴포넌트에 전달하기 | 자식 템플릿에 <ng-content> 태그를 사용한다. |
컴포넌트 상태가 변경 되는 것을 가로채기 | 컴포넌트 생명주기 함수를 사용한다. |
배포 | WebPack과 같은 번들러로 애플리케이션 파일과 프레임워크,라이브러리를 JavaScript로 번들링한다(TypeScript) |
반응형
'Angular > Angular 완전 기초' 카테고리의 다른 글
Angular12 기초개념 데이터 바인딩 (0) | 2021.09.02 |
---|---|
Angular 컴파일 개념 (AOT vs JIT) (0) | 2021.08.25 |
Angular에서 생명주기(Life Cycle) (0) | 2021.08.23 |
Angular 파일 구조 간편정리(완전 기초) (0) | 2021.08.21 |
Angular 개요 요약 정리 (Angular 12 시작하기 전 개념정리) (0) | 2021.08.19 |