본문 바로가기

컨퍼런스

GDG 17년 8월26일 - 03

3. Angular 기본 개념 잡기 (한장현)

1)Angular는 AngularJS와 다르다.

TS를 도입하면서 프레임워크 이름 변경

  • 정기적인 버전업
  • 철학은 비슷, 개발방법도 비슷

 

버전 정책은 SemVer

  • 숫자에 겁먹을 필요는 없다.

 

2)Angular는 종합 프레임 워크다.

전체를 아우르는 구조를 제공

  • 경쟁 프레임워크와 가장 큰 차이
  • 뷰, 데이터 풀, 폼, 라우터, Http, 애니메이션(+머티리얼 디자인), 서버 사이드 랜더링, CLI, 테스트

 

각 모듈의 정합성, 자연스러운 데이터 연결이 보장

  • MEAN 스택에서 Json객체 사용이 자유로운 것과 비슷한 느낌

3)프론트엔드 SPA를 만든다.

페이지 내부에서 라우터로 뷰를 전환

  • 전통적인 HTML 페이지 전환 방식과 다름

 

해당 주소일 떄 동작하는 컴포넌트를 등록

  • 자식 라우터를 사용하면 딥 링크도 가능 (/product/1515/sellect/3)

 

4)Typescript

Javascript 상위집합

  • Javascript + a
  • 정적타입, 제네릭, 인터페이스, TSLint

@어노테이션 === 함수

 

Angular 프레임워크에서 지원

  • 함수 타입, 변수 타입 제공
  • 기본 TSLint도 구성

 

5)컴퍼넌트 기반

추상화된 DOM 엘리먼트

  • 템플릿 + 클래스 코드 (+ 스타일, 테스트 스펙)
  • DOM에 직접 접근하는 것은 지양

 

어노테이션으로 Angular 컴포넌트 등록

  • 객체 생서으 주입은 angular가 관리
  • 라이프싸이클 지원(생성- 변화감지 - 종료)

컴포넌트의 조합, 트리로 구성

 

6)데이터 바인딩을 지원

angularJS에서 가장 인기있었던 기능

  • 성능 향상을 위해 단방향 바인딩이 기본

  • 양방향 바인딩도 가능

    • 프로퍼티바인딩
    • 이벤트 바인딩
    • 양방향 바인딩

7)옵저버블

Push model Data Stream Publisher

콜백 체인 -> promise체인 -> Async 체인 -> Observable 체인

 

Rxjs 내장

  • 기본 패키지에 포함

 

데이터 스트림에 사용

-Everything os stream?

-키보드 입력 이벤트, 서비스 상태 전달에 적합

-http는 ?

-Websocket에 더 어울림

 

 

8)서비스를 의존성으로 주입

컴퍼넌트를 연결

  • 전역 데이터 풀로 활용

 

의존성 주입기가 인스턴스를 생성하고 주입

  • 생성방법을 등록하면 컴포넌트에서 선언만 하고 사용
  • 인스턴스 생성 방법을 신경 쓸 필요가 없음
  • 컴포넌트 처럼 의존성 구성 가능
  • 더미 객체를 사용하는 단위 테스트에 유리

 

9)모듈화 지원

ES6 모듈의 연장, 대체는 아님

  • Export, import 사용
  • import로 불러오고 @NgModule에 등록

 

Angular 모듈: @NgModule

  • Angular에서 제공하는 모듈 : import
  • 사용자가 만든 컴포넌트 : dec

 

10)angular CLI

command Line interface

  • 프로젝트 기본 생성 + 구성요소 추가 + 서버 실행 + TSLint + 테스트 + 빌드 + 배포 자동화
  • CLI 버전에 따라 기본 구성이 달라짐

 

11)최신 트렌드 도입

웹 컴포넌트

PWA

크로스 플렛폼

  • 웹, 모바일, 네이티브 앱, 데스크탑 애플리케이션

리액티브 프로그래밍

서버 사이드 랜더링

머티리얼 디자인

Angular CLI

Angury(구글 개발자도구 확장 툴)

 

지금 공부해야할 것

  • Typescript
  • Angular 프레임 워크
  • 컴포넌트 기반 아키텍트
  • 리액티브 프로그래밍

 

앞으로 공부해야 할 것

  • WebPack 최적화 하는 방법
  • 서버 사이드 랜더링 & 검색 엔진 최적화
  • 머티리얼 디자인 & 애니메이션