길벗·이지톡

도서 IT 전문서

반응형과 함수형 개념을 이해하고 RxJS로 반응형 프로그래밍을 완성한다!

이 책은 RxJS와 반응형 프로그래밍을 처음 접하는 사람들에게 자바스크립트 개발자들이 직면한 대량의 비동기 데이터 처리 문제를 설명하고 RxJS로 이 문제를 해결하는 방법을 보여준다. 다양한 예제로 함수형 반응형 프로그래밍(FRP) RxJS의 핵심 개념과 사용 방법을 설명하며 RxJS를 리액트 및 리덕스로 만들어진 뱅킹 애플리케이션과 통합하는 방법을 소개한다. 

 

 


 

목차

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 연산자 선택


 

더보기접기

저자

ㆍ지은이 폴 대니얼스(Paul P. Daniels)

저자소개

증강 현실부터 임베디드 시스템, 클라우드 플랫폼에 이르기까지 다양한 분야에서 일하는 풀 스택 개발자다. Rx 커뮤니티의 오랜 사용자이자 기여자로 반응형 프로그래밍 전파에 앞장서고 있다. 개발 업무 외에도 라틴 댄서이자 강사로 활동하고 있다.


 

ㆍ지은이 루이스 아텐시오(Luis Atencio)

저자소개

시트릭스 시스템즈의 소프트웨어 엔지니어다. 컴퓨터 과학 학사 및 석사 학위가 있고 현재는 자바스크립트, 자바, PHP로 웹 애플리케이션을 개발하고 있다. 커뮤니티, 콘퍼런스, 지역 모임도 열심히 참여하며 개발하지 않을 때는 개발자 블로그(http://luisatencio.net)나 기사를 작성한다.  


 

저서

 <함수형 자바스크립트>(한빛미디어, 2018)


ㆍ옮긴이 김건희

저자소개

처음 접해본 프로그래밍 언어가 자바스크립트였고, 여러 플랫폼을 자바스크립트 기반의 Node.js와 리액트로 구축해왔다. 유연하면서도 확장 가능성이 많은 자바스크립트에 큰 매력을 느껴 꾸준히 깊게 공부하고 있다 

 

 

연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.