RxJS 반응형 프로그래밍
비동기, 함수형, 반응형 개념을 한 권의 책으로 배운다!
이 책은 RxJS와 반응형 프로그래밍을 처음 접하는 사람들에게 자바스크립트 개발자들이 직면한 대량의 비동기 데이터 처리 문제를 설명하고 RxJS로 이 문제를 해결하는 방법을 보여준다. 다양한 예제로 함수형 반응형 프로그래밍(FRP)과 RxJS의 핵심 개념과 사용 방법을 설명하며 RxJS를 리액트 및 리덕스로 만들어진 뱅킹 애플리케이션과 통합하는 방법을 소개한다.
«RxJS 반응형 프로그래밍»은 1~3장을 공개합니다.
목차
- 제 1 부 스트림 이해하기
- 1장 반응형으로 생각하기
- 1.1 동기 연산 vs 비동기 연산
- 1.1.1 블로킹 코드 문제
- 1.1.2 콜백 함수와 논블로킹 코드
- 1.1.3 시간과 공간 이해하기
- 1.1.4 반응형 사고에서 콜백을 사용하지 않아야 할까
- 1.1.5 이벤트 이미터
- 1.2 Promise로 더 나아진 콜백
- 1.3 다른 패러다임의 필요성
- 1.4 RxJS 이해하기
- 1.4.1 스트림 측면에서 생각하기: 데이터의 흐름과 전파
- 1.4.2 RxJS 프로젝트
- 1.4.3 모든 것이 스트림이다
- 1.4.4 프로그램에서 시간 개념의 추상화
- 1.4.5 Rx 스트림의 컴포넌트
- 1.5 반응형 프로그래밍과 다른 프로그래밍 패러다임
- 1.6 요약
- 2장 RxJS로 배우는 반응형 프로그래밍
- 2.1 반응형 프로그래밍의 기초인 함수형 프로그래밍
- 2.1.1 함수형 프로그래밍
- 2.1.2 이터레이터 패턴
- 2.2 스트림의 데이터 기반 접근 방법
- 2.3 Rx.Observable로 데이터 소스 감싸기
- 2.3.1 다양한 데이터 소스 식별하기
- 2.3.2 RxJS 옵저버블 생성
- 2.3.3 언제 어디서 RxJS를 사용하는가
- 2.3.4 전달하거나 전달하지 않거나
- 2.4 옵저버로 데이터 사용하기
- 2.4.1 Observer API
- 2.4.2 밑바닥부터 옵저버블 만들어보기
- 2.4.3 옵저버블 모듈
- 2.5 요약
- 3장 핵심 연산자
- 3.1 스트림 평가와 취소
- 3.1.1 즉시 할당의 단점
- 3.1.2 지연 할당과 옵저버블 구독
- 3.1.3 구독 해제: 명시적 취소
- 3.1.4 RxJS와 다른 API 간의 취소 불일치
- 3.2 RxJS 옵저버블 연산자
- 3.2.1 핵심 연산자 소개
- 3.3 집계 기능이 있는 연산자의 파이프라인 순서 지정
- 3.3.1 독립적인 파이프라인과 참조 투명성
- 3.3.2 RxJS 시퀀스의 성능 이점
- 3.4 요약
- 4장 RxJS에서의 시간
- 4.1 왜 시간을 신경 써야 할까
- 4.2 자바스크립트의 비동기 타이밍 이해하기
- 4.2.1 암시적 타이밍
- 4.2.2 명시적 타이밍
- 4.2.3 자바스크립트의 타이밍 인터페이스
- 4.3 RxJS로 시간 다루기
- 4.3.1 전파
- 4.3.2 순차적인 시간
- 4.4 사용자 입력 처리하기
- 4.4.1 디바운싱
- 4.4.2 스로틀링
- 4.5 RxJS에서의 버퍼링
- 4.6 요약
- 제 2 부 옵저버블의 활용
- 5장 반응형 스트림 적용하기
- 5.1 하나를 위한 모두, 모두를 위한 하나
- 5.1.1 스트림을 병합하여 이벤트 인터리빙하기
- 5.1.2 스트림을 연결하여 이벤트 순서 유지하기
- 5.1.3 최신 옵저버블 데이터로 전환하기
- 5.2 중첩 옵저버블 처리하기
- 5.3 비동기 스트림 마스터하기
- 5.4 concatMap으로 드래그 앤 드롭하기
- 5.5 요약
- 6장 비즈니스 프로세스 조정하기
- 6.1 옵저버블의 수명 주기에 후킹하기
- 6.1.1 웹 훅과 옵저버 패턴
- 6.1.2 연결된 옵저버블
- 6.2 combineLatest와 forkJoin으로 병렬 스트림 결합하기
- 6.2.1 Promise 사용의 한계
- 6.2.2 병렬 스트림 결합
- 6.2.3 forkJoin으로 조정 강화하기
- 6.3 반응형 데이터베이스 구축하기
- 6.3.1 반응형으로 데이터베이스 채우기
- 6.3.2 대량 데이터 작성하기
- 6.3.3 관련된 데이터베이스 작업 조인하기
- 6.3.4 반응형 데이터베이스
- 6.4 요약
- 7장 RxJS의 에러 처리
- 7.1 일반적인 에러 처리 기술
- 7.1.1 try/catch를 이용한 에러 처리
- 7.1.2 콜백에 에러 위임하기
- 7.1.3 에러와 Promise
- 7.2 명령형 에러 처리와 함수형 및 반응형 코드 베이스 간의 비호환성
- 7.3 함수형 에러 처리 방식 이해하기
- 7.4 RxJS의 실패 처리 방식
- 7.4.1 옵저버에 다운스트림으로 전파된 에러
- 7.4.2 에러 포착과 반응
- 7.4.3 일정 횟수 동안 실패한 스트림 재시도하기
- 7.4.4 실패한 재시도에 반응하기
- 7.5 요약
- 제 3 부 RxJS 마스터하기
- 8장 핫 옵저버블과 콜드 옵저버블
- 8.1 핫 옵저버블과 콜드 옵저버블이란
- 8.1.1 콜드 옵저버블
- 8.1.2 핫 옵저버블
- 8.2 새로운 데이터 소스 타입인 웹소켓 살펴보기
- 8.2.1 웹소켓이란
- 8.2.2 Node.js로 만든 간단한 웹소켓 서버
- 8.2.3 웹소켓 클라이언트
- 8.3 부가 작용이 재구독 또는 재실행에 미치는 영향
- 8.3.1 재실행 vs 재구독
- 8.3.2 스트림 로직 재실행하기
- 8.3.3 스트림 재구독하기
- 8.4 옵저버블의 온도 변경하기
- 8.4.1 온도계로서의 생산자
- 8.4.2 핫 옵저버블을 콜드 옵저버블로 만들기
- 8.4.3 콜드 옵저버블을 핫 옵저버블로 만들기
- 8.4.4 연산자에 의한 핫 옵저버블 스트림 생성하기
- 8.5 하나의 옵저버블을 여러 옵저버블에 연결하기
- 8.5.1 publish( )
- 8.5.2 publishReplay( )
- 8.5.3 publishLast( )
- 8.6 요약
- 9장 테스트 가능한 반응형 프로그램 만들기
- 9.1 함수형 프로그램에 내장된 테스트
- 9.2 비동기 코드 및 Promise 테스트
- 9.2.1 AJAX 요청 테스트
- 9.2.2 Promise와 작업하기
- 9.3 반응형 스트림 테스트
- 9.4 스트림을 테스트 용이하게 만들기
- 9.5 RxJS의 값 스케줄링
- 9.6 가상 현실 증강
- 9.6.1 마블 다이어그램 다루기
- 9.6.2 만들 때까지 속이기
- 9.6.3 테스트에 적합하게 검색 스트림 리팩터링하기
- 9.7 요약
- 10장 RxJS 실무 프로젝트
- 10.1 기본 뱅킹 애플리케이션 구축
- 10.2 리액트와 리덕스
- 10.2.1 리액트로 UI 컴포넌트 렌더링하기
- 10.2.2 리덕스로 상태 관리하기
- 10.3 애플리케이션 상태를 리덕싱하기
- 10.3.1 액션과 리듀서
- 10.3.2 리덕스 스토어
- 10.4 핫 RxJS와 리덕스 스토어 어댑터 구축하기
- 10.5 RxJS Subject가 있는 비동기 미들웨어
- 10.5.1 RxJS 서브젝트
- 10.5.2 반응형 미들웨어인 에픽 구축하기
- 10.6 한곳으로 모으기
- 10.7 요약
- 10.8 맺음말
- 부록
- 부록 A | 책에서 사용하는 라이브러리의 설치 방법
- 부록 B | 연산자 선택