SlideShare a Scribd company logo
1 of 23
Download to read offline
Angular CodeLab
Angular CodeLab
20 Oct, 2018
이상훈
Angular CodeLab
Contents
학습 가이드
개발 도구
서비스
옵저버 패턴
라우팅
HTTP
Rxjs
Angular CodeLab
학습 가이드
http://slides.com/yamoo9/angular
Angular CodeLab
1.키워드 익히기
•Angular는 다른 라이브러리나 프레임워크에 비해 러닝 커브가 높다.
•첫 진입을 어떻게 하느냐에 따라 흥미가 붙어 지속적으로 하거나 포기하거나 할
수 있다고 생각하기 때문에 처음에는 잘 정리된 서적을 보고 이해하고 따라하면
서 익히는 것을 추천
•angular.io을 읽고 따라하는 것은 가장 좋은 방법
2.프로젝트 개발! 개발! 개발!
•키워드를 익혔기 때문에 어떤 기능을 구현할 때 “어떻게 검색해보면 되겠다” 가 됨
3.실력을 올려보자
•어느정도 흥미가 붙고 익숙해진다면 중상급자들의 컨텐츠(유튜브나 블로그 등)
를 보면서 효율적으로 처리하는 방법이 있는 것을 깨닫는다.
•컨퍼런스, 세미나 등에 참여해서 아키텍처적인 문제나 막히는 부분 등을 알아간다
4.업데이트 시 change log는 필수 확인(18-10-18 Angular 7 공식 릴리즈!)
학습 가이드
Angular CodeLab
사이트
인프런: https://www.inflearn.com/?post_type=course&s=angular
DesignCourse: https://www.youtube.com/user/DesignCourse/featured
Academind: https://www.youtube.com/channel/UCSJbGtTlrDami-tDGPUV9-w
yamoo: http://slides.com/yamoo9/angular#/
서적
Angular Essentials: http://www.yes24.com/24/Goods/62063090?Acode=101
학습 가이드
Angular CodeLab
1. IDE
•Jetbrains Intellij, Webstorm
•VS code
•Atom
•Sublime text
•StackBlitz: VS code 기반의 online IDE
2.VS Code 플러그인
•Angular Language Service
•ESLint
•Typescript Toolbox
개발 도구
Angular CodeLab
내장 Directive(*ngFor, *ngIf)를 이용하여 엘리먼트 전시 관리
Component의 개념 이해와 생성
read-only 데이터를 위한 단방향 데이터 바인딩
양방향 데이터 바인딩을 통한 편집 가능한 필드 추가
키보드나 마우스 이벤트 등을 컴포넌트 메소드와 바인딩
부모 - 자식 간의 컴포넌트 통신
Pipe를 통해 데이터 포맷을 바꾸기
히어로 데이터를 Service를 통해 공유
각각의 Component와 뷰들 사이를 라우팅
지난 내용
Angular CodeLab
컴포넌트의 관심사와 어플리케이션 전역의 관심사를 분리하는
것에서 시작
로깅 기능이나 서버 통신 기능 등은 서비스에 선언하고 컴포넌트
는 뷰를 전시하는데 초점을 맞춤
이를 통해 코드의 재사용성은 높이고 복잡도는 낮춤
서비스(Service)
Angular CodeLab
의존성 주입(DI, Dependency Injection): 느슨한 결합을 위해
구성 요소 간의 의존 관계를 코드로 정의 하는 것이 아니라 외부
설정을 통해 정의하는 디자인 패턴
뭔가 필요한게 있으면 내가 가서 찾아 오던지 직접 만드는 대신 무
엇이 필요하다고 선언만 하면 외부에서 알아서 제공해주겠다는 것
서비스(Service)
Angular CodeLab
인젝터(Injector): 의존성 주입을 요청 받으면 서비스 인스턴
스들을 모아둔 인스턴스 풀(pool)에서 이를 검색하고 주입하
는 역할을 한다.
인스턴스 풀에 존재하지 않는다면 새롭게 인스턴스를 생성하
지만 존재한다면 새롭게 생성하지 않고 이미 생성된 인스턴
스를 주입한다.
Angular CodeLab
@Injectable 데코레이터: 클래스를 의존성 주입이 가
능하도록 한다.
providedIn: ‘root’로 설정 시 어플리케이션 전역에
서비스를 주입 가능
서비스(Service)
Angular CodeLab
옵저버 패턴(Observer Pattern)
https://www.slideshare.net/ancror/design-patterns-observer-pattern
Angular CodeLab
옵저버 패턴(Observer Pattern)
https://github.com/iirvine/principles-of-reactive-programming/blob/master/notes/week-4/003-subscriptions.md
Observable: 구독할 상대
subscribe: 구독하는 행위
Angular CodeLab
SPA(Single Page Application)을 위해 한 페이지 내
에서 컴포넌트를 변경해가며 전시
클라이언트 사이드 내비게이션 구현 방식
요청 URL 경로와 컴포넌트를 쌍으로 구성하여 처리
라우팅(Routing)
Angular CodeLab
라우팅(Routing)
https://twitter.com/deborahkurata/status/842544833558278145
Angular CodeLab
<router-outlet></router-outlet>
router에 등록된 컴포넌트가 전시되는 장소
routerLink
네비게이션 링크
사용자 클릭을 라우터 탐색으로 바꾸는 디렉티브
라우팅(Routing)
Angular CodeLab
HTTP
https://medium.com/@admin_87321/extending-angular-httpclient-6b33a7a1a4d0
Angular CodeLab
HTTP
https://medium.com/@admin_87321/extending-angular-httpclient-6b33a7a1a4d0
Angular CodeLab
HTTP
히어로 관리 서비스
getHeroes()
getHero()
addHero()
deleteHero()
updateHero()
메시지 관리 서비스
add()
clear()
Angular CodeLab
HTTP
angular-in-memory-web-api
임시로 mock 서버를 구축하여 확인해보기 위한 모듈
Http Request를 가로채서(interceptor) 대신 응답 해줌
HTTP 관습에 맞게(Restful하게) 요청한다면 기본적인
HTTP 메소드 기능이 가능
•목록 조회: GET “api/heroes”
•아이디로 조회: GET “api/heroes/:id”
•이름으로 검색: GET “api/heroes/?name=‘검색어’”
•추가: POST “api/heroes”, body: 추가할 데이터
•아이디로 삭제: DELETE “api/heroes/:id”
•수정: PUT “api/heroes/“, body: 수정할 데이터
Angular CodeLab
HttpClientModule
Angular에서 HTTP 통신 시 쓰이는 모듈
get, post, put, delete 등 HTTP 메소드 포함
모든 반환형은 Observable
Angular CodeLab
Rxjs
앞서 설명한 옵저버블 패턴의 구현체
pipe(): 연산자들을 파이프 안에서 나열
연산자(operators)
Observable을 생성, 변환, 필터링, 에러 처리 등의 기능을
하는 함수
tap: 사이드이팩트 없이 그대로 Observable 전달
catchError: 오류 발생 시 catchError의 핸들러 실행, 오
류가 발생하지 않는다면 bypass!
그 외에도 유용하게 쓰일 수 있는 많은 연산자가 존재
Angular CodeLab
Rxjs
앞서 설명한 옵저버블 패턴의 구현체
pipe(): 연산자들을 파이프 안에서 나열
연산자(operators)
Observable을 생성, 변환, 필터링, 에러 처리 등의 기능을
하는 함수
tap: 사이드이팩트 없이 그대로 Observable 전달
catchError: 오류 발생 시 catchError의 핸들러 실행, 오
류가 발생하지 않는다면 bypass!
그 외에도 유용하게 쓰일 수 있는 많은 연산자가 존재

More Related Content

What's hot

Dagger with multi modules
Dagger with multi modulesDagger with multi modules
Dagger with multi modulesYoung-Hyuk Yoo
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.장현 한
 
Effective c++ item45
Effective c++ item45Effective c++ item45
Effective c++ item45진화 손
 
Angular vs react
Angular vs reactAngular vs react
Angular vs react종현 김
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱NAVER D2
 
PHP Slim Framework with Angular
PHP Slim Framework with AngularPHP Slim Framework with Angular
PHP Slim Framework with AngularJT Jintae Jung
 
Droid Knight 2019
Droid Knight 2019Droid Knight 2019
Droid Knight 2019선옥 장
 
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Sa-ryong Kang
 
Angular2 톺아보기
Angular2 톺아보기 Angular2 톺아보기
Angular2 톺아보기 철민 배
 
Design pattern 4
Design pattern 4Design pattern 4
Design pattern 4Daniel Lim
 
Desing Pattern-2
Desing Pattern-2Desing Pattern-2
Desing Pattern-2Daniel Lim
 
Design Pattern 3
Design Pattern 3Design Pattern 3
Design Pattern 3Daniel Lim
 
Angularjs 도입 선택 가이드
Angularjs 도입 선택 가이드Angularjs 도입 선택 가이드
Angularjs 도입 선택 가이드NAVER D2
 

What's hot (13)

Dagger with multi modules
Dagger with multi modulesDagger with multi modules
Dagger with multi modules
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.
 
Effective c++ item45
Effective c++ item45Effective c++ item45
Effective c++ item45
 
Angular vs react
Angular vs reactAngular vs react
Angular vs react
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
 
PHP Slim Framework with Angular
PHP Slim Framework with AngularPHP Slim Framework with Angular
PHP Slim Framework with Angular
 
Droid Knight 2019
Droid Knight 2019Droid Knight 2019
Droid Knight 2019
 
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
 
Angular2 톺아보기
Angular2 톺아보기 Angular2 톺아보기
Angular2 톺아보기
 
Design pattern 4
Design pattern 4Design pattern 4
Design pattern 4
 
Desing Pattern-2
Desing Pattern-2Desing Pattern-2
Desing Pattern-2
 
Design Pattern 3
Design Pattern 3Design Pattern 3
Design Pattern 3
 
Angularjs 도입 선택 가이드
Angularjs 도입 선택 가이드Angularjs 도입 선택 가이드
Angularjs 도입 선택 가이드
 

Similar to Angular CodeLab 두번째

앵귤러 첫걸음(Angular for beginers)
앵귤러 첫걸음(Angular for beginers)앵귤러 첫걸음(Angular for beginers)
앵귤러 첫걸음(Angular for beginers)양 한빛
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기Seokjae Lee
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Yeon Soo Kim
 
Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.ChangHyeon Bae
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재NAVER D2
 
[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계AnselmKim
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJSEunYoung Kim
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장Seongchan Kang
 
Angular Popular Tools
Angular Popular ToolsAngular Popular Tools
Angular Popular ToolsSangHun Lee
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술중선 곽
 
Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Inho Kwon
 
AngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJSAngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJSKenneth Ceyer
 
LucideWorks Banana 소개
LucideWorks Banana 소개 LucideWorks Banana 소개
LucideWorks Banana 소개 SuHyun Jeon
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기NAVER Engineering
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
How_to_choose_the_right_framework
How_to_choose_the_right_frameworkHow_to_choose_the_right_framework
How_to_choose_the_right_frameworkJT Jintae Jung
 
DDD 그게 뭔데 (개념 찍먹편)
DDD 그게 뭔데 (개념 찍먹편)DDD 그게 뭔데 (개념 찍먹편)
DDD 그게 뭔데 (개념 찍먹편)명석 고
 

Similar to Angular CodeLab 두번째 (20)

앵귤러 첫걸음(Angular for beginers)
앵귤러 첫걸음(Angular for beginers)앵귤러 첫걸음(Angular for beginers)
앵귤러 첫걸음(Angular for beginers)
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
 
Angularcdk
AngularcdkAngularcdk
Angularcdk
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수
 
Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
 
[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계
 
Angular Library
Angular LibraryAngular Library
Angular Library
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJS
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장
 
Angular Popular Tools
Angular Popular ToolsAngular Popular Tools
Angular Popular Tools
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술
 
Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기
 
Design patterns
Design patternsDesign patterns
Design patterns
 
AngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJSAngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJS
 
LucideWorks Banana 소개
LucideWorks Banana 소개 LucideWorks Banana 소개
LucideWorks Banana 소개
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
How_to_choose_the_right_framework
How_to_choose_the_right_frameworkHow_to_choose_the_right_framework
How_to_choose_the_right_framework
 
DDD 그게 뭔데 (개념 찍먹편)
DDD 그게 뭔데 (개념 찍먹편)DDD 그게 뭔데 (개념 찍먹편)
DDD 그게 뭔데 (개념 찍먹편)
 

More from SangHun Lee

PWA 파헤치기
PWA 파헤치기PWA 파헤치기
PWA 파헤치기SangHun Lee
 
Angular CodeLab 첫번째
Angular CodeLab 첫번째Angular CodeLab 첫번째
Angular CodeLab 첫번째SangHun Lee
 
Chrome 69 updates
Chrome 69 updatesChrome 69 updates
Chrome 69 updatesSangHun Lee
 
Angular Component Interaction
Angular Component InteractionAngular Component Interaction
Angular Component InteractionSangHun Lee
 
Chrome 68 updates
Chrome 68 updatesChrome 68 updates
Chrome 68 updatesSangHun Lee
 
Reactive Programming with Rxjs
Reactive Programming with RxjsReactive Programming with Rxjs
Reactive Programming with RxjsSangHun Lee
 
SSG광고의 오마주_에드워드 호퍼
SSG광고의 오마주_에드워드 호퍼SSG광고의 오마주_에드워드 호퍼
SSG광고의 오마주_에드워드 호퍼SangHun Lee
 
[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기
[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기
[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기SangHun Lee
 
Ror 4주차(루비맛보기, form 태그)
Ror 4주차(루비맛보기, form 태그)Ror 4주차(루비맛보기, form 태그)
Ror 4주차(루비맛보기, form 태그)SangHun Lee
 
Ror 2주차(컨트롤러 생성)
Ror 2주차(컨트롤러 생성)Ror 2주차(컨트롤러 생성)
Ror 2주차(컨트롤러 생성)SangHun Lee
 
루비온레일즈_01_간단한 정적인 홈페이지 제작
루비온레일즈_01_간단한 정적인 홈페이지 제작루비온레일즈_01_간단한 정적인 홈페이지 제작
루비온레일즈_01_간단한 정적인 홈페이지 제작SangHun Lee
 
Basic of web ref.웹을지탱하는기술_02
Basic of web ref.웹을지탱하는기술_02Basic of web ref.웹을지탱하는기술_02
Basic of web ref.웹을지탱하는기술_02SangHun Lee
 
Eclipse rcp 정리(enabled when, contextmenu)
Eclipse rcp 정리(enabled when, contextmenu)Eclipse rcp 정리(enabled when, contextmenu)
Eclipse rcp 정리(enabled when, contextmenu)SangHun Lee
 
Basic of web ref.웹을지탱하는기술_01
Basic of web ref.웹을지탱하는기술_01Basic of web ref.웹을지탱하는기술_01
Basic of web ref.웹을지탱하는기술_01SangHun Lee
 
계획 Slideshare
계획 Slideshare계획 Slideshare
계획 SlideshareSangHun Lee
 
Sass 공부하기 slidshare
Sass 공부하기 slidshareSass 공부하기 slidshare
Sass 공부하기 slidshareSangHun Lee
 

More from SangHun Lee (20)

PWA 파헤치기
PWA 파헤치기PWA 파헤치기
PWA 파헤치기
 
Angular CodeLab 첫번째
Angular CodeLab 첫번째Angular CodeLab 첫번째
Angular CodeLab 첫번째
 
Chrome 69 updates
Chrome 69 updatesChrome 69 updates
Chrome 69 updates
 
Angular Component Interaction
Angular Component InteractionAngular Component Interaction
Angular Component Interaction
 
Chrome 68 updates
Chrome 68 updatesChrome 68 updates
Chrome 68 updates
 
Reactive Programming with Rxjs
Reactive Programming with RxjsReactive Programming with Rxjs
Reactive Programming with Rxjs
 
SSG광고의 오마주_에드워드 호퍼
SSG광고의 오마주_에드워드 호퍼SSG광고의 오마주_에드워드 호퍼
SSG광고의 오마주_에드워드 호퍼
 
[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기
[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기
[IOS말고 Android] Inflation을 이용하여 부분 Activity 띄우기
 
Ror 4주차(루비맛보기, form 태그)
Ror 4주차(루비맛보기, form 태그)Ror 4주차(루비맛보기, form 태그)
Ror 4주차(루비맛보기, form 태그)
 
Ror 2주차(컨트롤러 생성)
Ror 2주차(컨트롤러 생성)Ror 2주차(컨트롤러 생성)
Ror 2주차(컨트롤러 생성)
 
루비온레일즈_01_간단한 정적인 홈페이지 제작
루비온레일즈_01_간단한 정적인 홈페이지 제작루비온레일즈_01_간단한 정적인 홈페이지 제작
루비온레일즈_01_간단한 정적인 홈페이지 제작
 
Basic of web ref.웹을지탱하는기술_02
Basic of web ref.웹을지탱하는기술_02Basic of web ref.웹을지탱하는기술_02
Basic of web ref.웹을지탱하는기술_02
 
Eclipse gef
Eclipse gefEclipse gef
Eclipse gef
 
Gef 정리
Gef 정리Gef 정리
Gef 정리
 
Eclipse rcp 정리(enabled when, contextmenu)
Eclipse rcp 정리(enabled when, contextmenu)Eclipse rcp 정리(enabled when, contextmenu)
Eclipse rcp 정리(enabled when, contextmenu)
 
2015.07.01
2015.07.012015.07.01
2015.07.01
 
Basic of web ref.웹을지탱하는기술_01
Basic of web ref.웹을지탱하는기술_01Basic of web ref.웹을지탱하는기술_01
Basic of web ref.웹을지탱하는기술_01
 
Html5 video
Html5 videoHtml5 video
Html5 video
 
계획 Slideshare
계획 Slideshare계획 Slideshare
계획 Slideshare
 
Sass 공부하기 slidshare
Sass 공부하기 slidshareSass 공부하기 slidshare
Sass 공부하기 slidshare
 

Angular CodeLab 두번째

  • 2. Angular CodeLab Contents 학습 가이드 개발 도구 서비스 옵저버 패턴 라우팅 HTTP Rxjs
  • 4. Angular CodeLab 1.키워드 익히기 •Angular는 다른 라이브러리나 프레임워크에 비해 러닝 커브가 높다. •첫 진입을 어떻게 하느냐에 따라 흥미가 붙어 지속적으로 하거나 포기하거나 할 수 있다고 생각하기 때문에 처음에는 잘 정리된 서적을 보고 이해하고 따라하면 서 익히는 것을 추천 •angular.io을 읽고 따라하는 것은 가장 좋은 방법 2.프로젝트 개발! 개발! 개발! •키워드를 익혔기 때문에 어떤 기능을 구현할 때 “어떻게 검색해보면 되겠다” 가 됨 3.실력을 올려보자 •어느정도 흥미가 붙고 익숙해진다면 중상급자들의 컨텐츠(유튜브나 블로그 등) 를 보면서 효율적으로 처리하는 방법이 있는 것을 깨닫는다. •컨퍼런스, 세미나 등에 참여해서 아키텍처적인 문제나 막히는 부분 등을 알아간다 4.업데이트 시 change log는 필수 확인(18-10-18 Angular 7 공식 릴리즈!) 학습 가이드
  • 5. Angular CodeLab 사이트 인프런: https://www.inflearn.com/?post_type=course&s=angular DesignCourse: https://www.youtube.com/user/DesignCourse/featured Academind: https://www.youtube.com/channel/UCSJbGtTlrDami-tDGPUV9-w yamoo: http://slides.com/yamoo9/angular#/ 서적 Angular Essentials: http://www.yes24.com/24/Goods/62063090?Acode=101 학습 가이드
  • 6. Angular CodeLab 1. IDE •Jetbrains Intellij, Webstorm •VS code •Atom •Sublime text •StackBlitz: VS code 기반의 online IDE 2.VS Code 플러그인 •Angular Language Service •ESLint •Typescript Toolbox 개발 도구
  • 7. Angular CodeLab 내장 Directive(*ngFor, *ngIf)를 이용하여 엘리먼트 전시 관리 Component의 개념 이해와 생성 read-only 데이터를 위한 단방향 데이터 바인딩 양방향 데이터 바인딩을 통한 편집 가능한 필드 추가 키보드나 마우스 이벤트 등을 컴포넌트 메소드와 바인딩 부모 - 자식 간의 컴포넌트 통신 Pipe를 통해 데이터 포맷을 바꾸기 히어로 데이터를 Service를 통해 공유 각각의 Component와 뷰들 사이를 라우팅 지난 내용
  • 8. Angular CodeLab 컴포넌트의 관심사와 어플리케이션 전역의 관심사를 분리하는 것에서 시작 로깅 기능이나 서버 통신 기능 등은 서비스에 선언하고 컴포넌트 는 뷰를 전시하는데 초점을 맞춤 이를 통해 코드의 재사용성은 높이고 복잡도는 낮춤 서비스(Service)
  • 9. Angular CodeLab 의존성 주입(DI, Dependency Injection): 느슨한 결합을 위해 구성 요소 간의 의존 관계를 코드로 정의 하는 것이 아니라 외부 설정을 통해 정의하는 디자인 패턴 뭔가 필요한게 있으면 내가 가서 찾아 오던지 직접 만드는 대신 무 엇이 필요하다고 선언만 하면 외부에서 알아서 제공해주겠다는 것 서비스(Service)
  • 10. Angular CodeLab 인젝터(Injector): 의존성 주입을 요청 받으면 서비스 인스턴 스들을 모아둔 인스턴스 풀(pool)에서 이를 검색하고 주입하 는 역할을 한다. 인스턴스 풀에 존재하지 않는다면 새롭게 인스턴스를 생성하 지만 존재한다면 새롭게 생성하지 않고 이미 생성된 인스턴 스를 주입한다.
  • 11. Angular CodeLab @Injectable 데코레이터: 클래스를 의존성 주입이 가 능하도록 한다. providedIn: ‘root’로 설정 시 어플리케이션 전역에 서비스를 주입 가능 서비스(Service)
  • 12. Angular CodeLab 옵저버 패턴(Observer Pattern) https://www.slideshare.net/ancror/design-patterns-observer-pattern
  • 13. Angular CodeLab 옵저버 패턴(Observer Pattern) https://github.com/iirvine/principles-of-reactive-programming/blob/master/notes/week-4/003-subscriptions.md Observable: 구독할 상대 subscribe: 구독하는 행위
  • 14. Angular CodeLab SPA(Single Page Application)을 위해 한 페이지 내 에서 컴포넌트를 변경해가며 전시 클라이언트 사이드 내비게이션 구현 방식 요청 URL 경로와 컴포넌트를 쌍으로 구성하여 처리 라우팅(Routing)
  • 16. Angular CodeLab <router-outlet></router-outlet> router에 등록된 컴포넌트가 전시되는 장소 routerLink 네비게이션 링크 사용자 클릭을 라우터 탐색으로 바꾸는 디렉티브 라우팅(Routing)
  • 19. Angular CodeLab HTTP 히어로 관리 서비스 getHeroes() getHero() addHero() deleteHero() updateHero() 메시지 관리 서비스 add() clear()
  • 20. Angular CodeLab HTTP angular-in-memory-web-api 임시로 mock 서버를 구축하여 확인해보기 위한 모듈 Http Request를 가로채서(interceptor) 대신 응답 해줌 HTTP 관습에 맞게(Restful하게) 요청한다면 기본적인 HTTP 메소드 기능이 가능 •목록 조회: GET “api/heroes” •아이디로 조회: GET “api/heroes/:id” •이름으로 검색: GET “api/heroes/?name=‘검색어’” •추가: POST “api/heroes”, body: 추가할 데이터 •아이디로 삭제: DELETE “api/heroes/:id” •수정: PUT “api/heroes/“, body: 수정할 데이터
  • 21. Angular CodeLab HttpClientModule Angular에서 HTTP 통신 시 쓰이는 모듈 get, post, put, delete 등 HTTP 메소드 포함 모든 반환형은 Observable
  • 22. Angular CodeLab Rxjs 앞서 설명한 옵저버블 패턴의 구현체 pipe(): 연산자들을 파이프 안에서 나열 연산자(operators) Observable을 생성, 변환, 필터링, 에러 처리 등의 기능을 하는 함수 tap: 사이드이팩트 없이 그대로 Observable 전달 catchError: 오류 발생 시 catchError의 핸들러 실행, 오 류가 발생하지 않는다면 bypass! 그 외에도 유용하게 쓰일 수 있는 많은 연산자가 존재
  • 23. Angular CodeLab Rxjs 앞서 설명한 옵저버블 패턴의 구현체 pipe(): 연산자들을 파이프 안에서 나열 연산자(operators) Observable을 생성, 변환, 필터링, 에러 처리 등의 기능을 하는 함수 tap: 사이드이팩트 없이 그대로 Observable 전달 catchError: 오류 발생 시 catchError의 핸들러 실행, 오 류가 발생하지 않는다면 bypass! 그 외에도 유용하게 쓰일 수 있는 많은 연산자가 존재