RxJS 6 기반으로 배우는 리액티브 프로그래밍 입문하기
RxJS는 리액티브 프로그래밍을 자바스크립트에서 구현한 라이브러리다. 자바스크립트 프레임워크인 앵귤러는 이미 버전 2에서 RxJS를 도입했다. 또한 넷플릭스, 마이크로소프트, 에어비앤비, 깃허브 등 글로벌 IT 기업에서도 사용 중이다.
이 책은 RxJS를 이용해 자바스크립트로 리액티브 프로그래밍에 입문할 수 있게 도와준다. 다양한 웹 서비스에 RxJS를 적용해온 두 저자가 리액티브 프로그래밍의 개념, 연산자, 스케줄러, 앵귤러/리액트/리덕스 활용, ES2015+ 문법 소개 등 RxJS를 시작하는 데 꼭 필요한 핵심 개념과 기법을 소개한다.
이 책의 특징
1. RxJS의 주요 문법을 상세하게 소개
이 책은 RxJS를 제대로 공부할 수 있도록 구성했습니다. RxJS 공식 문서에 소개된 179가지 문법 중 가장 자주 사용하는 75가지의 문법을 엄선해 자세하게 소개합니다. 또한 소개하는 문법 대부분에 RxJS의 이해를 돕는 마블 다이어그램을 함께 소개해 실제 데이터 처리의 흐름을 한눈에 알 수 있도록 돕습니다.
2. 쉽지만 실무에 응용할 수 있는 예제 만들기
4부에서는 현재 프런트엔드 웹 개발에서 가장 대중화된 앵귤러와 리액트에서 RxJS를 사용하는 방법을 소개합니다. 앵귤러 기반의 초간단 반응형 폼과 리액트 및 리덕스를 이용한 초간단 로그인 폼 만들기도 배웁니다. 간단한 예제지만 실무에 응용할 수 있는 예제를 만들어보면 RxJS의 흐름을 좀 더 명확하게 이해할 수 있습니다.
대상 독자
PART 1 RxJS 소개
CHAPTER 1 RxJS 소개와 개발 환경 구축
1.1 리액티브 프로그래밍이란?
1.2 RxJS
1.3 RxJS로 개발할 때 알아야 할 것
1.4 RxJS 개발 환경 설정하기
1.5 마치며
CHAPTER 2 RxJS의 기본 개념
2.1 배경 지식
2.2 옵저버블
2.3 서브젝트
2.4 연산자
2.5 스케줄러
2.6 마블 다이어그램
2.7 프로미스와 함께 본 옵저버 콜백 및 에러 처리
2.8 함수형 리액티브 프로그래밍에 있는 오해
2.9 마치며
CHAPTER 3 생성 함수
3.1 create 함수
3.2 of 함수
3.3 from 함수와 fromEvent 함수
3.4 defer 함수
3.5 range 함수
3.6 시간 함수
3.7 아무 값도 발행하지 않는 생성 함수
PART 2 RxJS의 연산자
CHAPTER 4 필터링 연산자
4.1 filter 연산자
4.2 first 연산자
4.3 last 연산자
4.4 명시적으로 구독 해제하지 않도록 돕는 연산자
4.5 필요 없는 값을 발행하지 않는 연산자
4.6 값 발행 후 일정 시간을 기다리는 연산자
4.7 중복 값을 발행하지 않는 연산자
4.8 샘플링 연산자
CHAPTER 5 변환 연산자
5.1 map 연산자
5.2 pluck 연산자
5.3 mergeMap 연산자
5.4 switchMap 연산자
5.5 concatMap 연산자
5.6 scan 연산자
5.7 partition 연산자
5.8 groupBy 연산자
5.9 buffer 연산자
5.10 bufferCount 연산자
5.11 window 연산자
5.12 windowCount 연산자
CHAPTER 6 조합 연산자
6.1 merge 연산자
6.2 concat 연산자
6.3 forkJoin 함수
6.4 combineLatest 연산자
6.5 zip 연산자
6.6 startWith 연산자
CHAPTER 7 수학 및 결합 연산자
7.1 reduce 연산자
7.2 max 연산자
7.3 min 연산자
7.4 count 연산자
CHAPTER 8 유틸리티 연산자
8.1 tap 연산자
8.2 finalize 연산자
8.3 toPromise 함수
8.4 toArray 연산자
8.5 timeout 연산자
CHAPTER 9 조건 연산자
9.1 defaultIfEmpty 연산자
9.2 isEmpty 연산자
9.3 find 연산자
PART 3 효과적인 RxJS 사용
CHAPTER 10 에러 처리
10.1 catchError 연산자
10.2 retry 연산자
10.3 retryWhen 연산자
CHAPTER 11 서브젝트
11.1 서브젝트의 특성
11.2 서브젝트와 옵저버블의 연결
11.3 서브젝트의 에러와 완료 처리
11.4 서브젝트의 종류
11.5 마치며
CHAPTER 12 멀티캐스팅 연산자
12.1 핫 옵저버블과 콜드 옵저버블
12.2 multicast 연산자
12.3 publish 연산자
12.4 refCount 연산자
12.5 share 연산자
12.6 마치며
CHAPTER 13 스케줄러
13.1 이벤트 루프와 RxJS의 스케줄러 개념
13.2 스케줄러 구조
13.3 대표 스케줄러
13.4 스케줄러에서 사용하는 연산자
PART 4 실전 RxJS
CHAPTER 14 테스트
14.1 모카
14.2 RxJS 테스트
14.3 createHotObservable/ColdObservable 메서드
14.4 마치며
CHAPTER 15 ES2015+와 RxJS
15.1 제너레이터와 프로미스를 응용한 비동기 흐름 제어
15.2 co 라이브러리
15.3 spawn 연산자
15.4 async 및 await와 옵저버블
15.5 마치며
CHAPTER 16 앵귤러와 RxJS
16.1 앵귤러 내부의 RxJS
16.2 RxJS를 사용하는 초간단 앵귤러 앱
16.3 비동기 파이프
16.4 리스트 필터링
16.5 마치며
CHAPTER 17 리액트에서 RxJS 사용하기
17.1 리액트와 리덕스
17.2 리액트 프로젝트 구성
17.3 리액트 컴포넌트
17.4 초간단 리액트 카운터 앱
17.5 리덕스
17.6 간단한 리덕스 앱
17.7 RxJS로 구현하는 리덕스
17.8 리액트와 연동하기
17.9 비동기 액션
17.10 마치며
CHAPTER 18 redux-observable
18.1 redux-observable
18.2 에픽
18.3 프로젝트 구성
18.4 액션 타입 상수
18.5 액션 생성자
18.6 리듀서
18.7 스토어
18.8 리액트와 리덕스 연동
18.9 마치며
CHAPTER 19 사용자 정의 생성 함수 및 연산자 만들기
19.1 사용자 정의 파이퍼블 연산자
19.2 사용자 정의 생성 함수
APPENDIX A ES2015+ 기본
A.1 let과 const
A.2 템플릿 리터럴
A.3 향상된 객체 리터럴
A.4 비구조화
A.5 기본값과 Rest 및 Spread 연산자
A.6 화살표 함수
A.7 모듈
A.8 클래스
A.9 프로미스
A.10 제너레이터 함수
A.11 Array에 추가된 메서드들과 for...of문
A.12 Map
A.13 Set
A.14 심벌
A.15 이터레이터와 이터러블
A.16 프락시
A.17 리플렉트
APPENDIX B RxJS 5와 6의 차이점
B.1 파이퍼블 연산자를 도입한 이유
B.2 자바스크립트 키워드와 충돌 방지
B.3 RxJS v5 코드를 RxJS v6 코드로 변경하는 방법
B.4 버전과 하위/상위 호환성
B.5 마치며
RxJS를 제대로 알려주는 정석과 같은 책을 만난다
비동기로 처리해야 하는 데이터양이 크게 늘면서 여러 프로그래밍 언어에서 효율적인 비동기 프로그래밍 기법을 도입하고 있다. 이러한 과정 중 등장한 것이 리액티브 프로그래밍이다. 리액티브 프로그래밍은 데이터의 비동기 처리를 효율적으로 다룰 수 있는 프로그래밍이다. 단적인 예로 콜백 함수를 반복해서 사용해야 하는 콜백 지옥을 벗어나는 데 유용하다. 단, 배우기가 어려운 프로그래밍 개념으로 알려져 있다. 편리한 대신 그만큼 배우는 데도 적지 않은 시간이 드는 것이다. 공식 문서의 설명도 어렵다고 느끼는 사람이 많다.
RxJS는 리액티브 프로그래밍을 자바스크립트에서 구현한 라이브러리다. 이 책은 실제 대규모 포털 서비스에서 RxJS를 사용한 경험을 바탕으로 배우기 어려운 RxJS를 최대한 쉽게 설명했다. 1~3부에서는 약 75가지의 핵심 문법을 구현 코드까지 분석하면서 상세하게 설명한다. 4부에서는 앵귤러, 리액트, 리덕스 등 다양한 자바스크립트 라이브러리 및 프레임워크에서 RxJS를 사용하는 방법을 다룬다. 부록에 있는 ES2015+ 문법 기본은 최신 자바스크립트 표준에 약한 개발자도 이 책을 충분히 읽도록 돕는다. RxJS를 접해보고 싶었으나 지금까지 시도해보지 못한 개발자라면 정석과 같은 이 책으로 RxJS를 시작하자!
루이스 아텐시오
알렉스 뱅크스 , 이브 포셀로
이선 브라운
조우진