본문내용 바로가기
MD의선택 무료배송 소득공제

RxJS 퀵스타트 어리둥절한 RxJS를 개념부터 서비스까지! | RxJS 6+ 기반 설명

손찬욱 지음 | 루비페이퍼 | 2018년 07월 24일 출간
클로버 리뷰쓰기
  • 정가 : 28,000원
    판매가 : 25,200 [10%↓ 2,800원 할인]
  • 통합포인트 :
    [기본적립] 1,400원 적립 [5% 적립] [추가적립] 5만원 이상 구매 시 2천원 추가적립 안내 [회원혜택] 실버등급 이상, 3만원 이상 구매 시 2~4% 추가적립 안내
  • 추가혜택 : 포인트 안내 도서소득공제 안내 추가혜택 더보기
  • 배송비 : 무료 배송비 안내
  • 배송일정 : 서울특별시 종로구 세종대로 기준 지역변경
    10월 05일 출고 예정 배송일정 안내
  • 바로드림 : 인터넷으로 주문하고 매장에서 직접 수령 안내 바로드림 혜택
    휴일에는 바로드림 픽업으로 더 빨리 받아 보세요. 바로드림 혜택받고 이용하기
상품상세정보
ISBN 9791186710357(1186710357)
쪽수 440쪽
크기 171 * 233 * 22 mm /1139g 판형알림

책소개

이 책이 속한 분야

RxJS를 왜, 언제, 어떻게 사용해야 하는가?에 대한 완벽한 해답!

RxJS가 소프트웨어 개발 문제를 어떤 식으로 해결하려 했는지를 살펴보면서 RxJS에 녹아들어간 함수형 프로그래밍과 리액티브 프로그래밍 패러다임을 이해한다. 더불어 서비스에서 사용할 수 있는 풍부한 예제를 점진적으로 개선하면서 RxJS의 개념을 설명한다. 마지막으로 RxJS를 사용하는 프로젝트(버스 노선 조회 서비스)에서 어떻게 요구사항을 분석하고 구현하는지를 학습한다.

저자소개

저자 : 손찬욱

LG CNS에서 소프트웨어 아키텍트로 일하다 모바일에 끌려 프런트엔드 개발자가 되었다.
네이버에서는 네이버 모바일 메인, 쇼핑과 같은 서비스 개발에 참여하였으며 오픈소스인 JMC(Jindo Mobile Component)와 egjs 등을 개발하였다.
공유와 참여에 관심이 많아 iScroll 커미터로 활동하기도 하였으며 Deview와 같은 다양한 커뮤니티에서 발표나 강연을 하였다. 개인적으로는 “아내와 아들 그리고 딸밖에 모르는 철부지 남편”이라는 기술 블로그를 운영하고 있다.
지금은 네이버 아폴로에서 FE 기술 리딩을 담당하고 있다.

목차

RxJS를 시작하기 전에
1.1. 웹 환경의 변화
1.2. 웹 개발 복잡도 증가
1.3. 웹 애플리케이션은 상태 머신이다
1.4. 웹 애플리케이션 오류가 발생하는 경우
__1.4.1. 입력 오류
__1.4.2. 상태 오류
__1.4.3. 로직 오류
1.5. RxJS는 무엇인가? 그리고 웹 애플리케이션과 무슨 관련이 있는가?

- 1부 -

Chapter 01. RxJS가 해결하려고 했던 문제 1 - 입력 데이터의 오류
1.1. 웹 애플리케이션의 입력 데이터
1.2. 입력 데이터의 전달 시점이 다양하다
__1.2.1. 동기
__1.2.2. 비동기
1.3. 동기와 비동기를 함께 사용할 수밖에 없는가?
1.4. RxJS는 어떻게 개선하였나?
__1.4.1. Observable
__1.4.2. 모든 데이터는 Observable 인스턴스로 만들 수 있다
1.5. 정리

Chapter 02. RxJS가 해결하려고 했던 문제 2 - 상태 전파 문제
1.1. 웹 애플리케이션의 상태
1.2. 웹 애플리케이션의 상태 변화로 인한 문제점
__1.2.1. 첫째, User의 인터페이스가 변경되면, System도 함께 변경해야 한다
__1.2.2. 둘째, User 상태를 확인하기 위한 인터페이스에 대한 의사소통 비용이 발생한다
__1.2.3. 셋째, 다수의 클래스가 User에 의존 관계가 있는 경우라면 User의 변경 여부를
반영하기 위해 다수의 클래스들이 직접 User의 상태를 모두 반영해야 한다
1.3. 우리가 이미 알고 있는 솔루션 - 옵서버 패턴
__1.3.1. Loosely Coupling
__1.3.2. 자동 상태 전파
__1.3.3. 인터페이스의 단일화
1.4. 옵서버 패턴의 흔한 예
1.5. 옵서버 패턴 적용하기
1.6. RxJS는 무엇을 해결하고자 했는가?
__1.6.1. 상태 변화는 언제 종료되는가?
__1.6.2. 상태 변화에서 에러가 발생하면?
__1.6.3. Observer에 의해 Subject의 상태가 변경되는 경우는?
1.7. RxJS는 어떻게 개선하였나?
__1.7.1. 인터페이스의 확장
__1.7.2. Observable은 Read-only
1.8. Observable은 리액티브하다
1.9. 정리

Chapter 03. RxJS가 해결하려고 했던 문제 3 - 로직 오류
1.1. 웹 애플리케이션의 로직
1.2. 로직의 복잡성 그리고 오류
__1.2.1. 반복문과 분기문
__1.2.2. 변수는 오류의 시작
1.3. 자바스크립트의 솔루션
__1.3.1. 로직의 분리
__1.3.2. 반복문, 분기문, 그리고 변수와의 이별
1.4. RxJS는 어떻게 개선하였나?
__1.4.1. RxJS가 제공하는 오퍼레이터
__1.4.2. 불변 객체 Observable
1.5. 정리

부록1. 1부를 마치며
1.1. 입력 데이터 오류
1.2. 상태 전파 오류
1.3. 로직 처리의 오류
부록2. 함수형 프로그래밍
1.1. 함수형 프로그래밍이란?
1.2. 수학적 함수의 계산
1.3. 상태 변경과 가변 데이터를 피하려는
__1.3.1. 부원인과 부작용
__1.3.2. 불변 데이터
1.4. 순수 함수, 상태가 없다
1.5. RxJS에 녹아 있는 함수형 프로그래밍

- 2부 -

Chapter 01. RxJS란 무엇인가?
1.1. RxJS란?
1.2. RxJS 시작하기
__1.2.1. RxJS 첫 번째 예제
__1.2.2. RxJS 첫 번째 예제 개선하기
__1.2.3. RxJS 두 번째 예제
1.3. RxJS 4대 천왕
__1.3.1. Observable
__1.3.2. 오퍼레이터
__1.3.3. Observer
__1.3.4. Subscription
1.4. RxJS 개발 방법
1.5. 정리

Chapter 02. Observable 만들기
1.1. Observable 생성자를 이용하여 Observable 만들기
1.2. Observable 구현 시 고려해야 할 것들
__1.2.1. 에러 발생
__1.2.2. 데이터 전달이 완료된 경우
__1.2.3. 구독 해제
1.3. rxjs 네임스페이스에 있는 생성 함수로 Observable 만들기
__1.3.1. of
__1.3.2. range
__1.3.3. fromEvent
__1.3.4. from
__1.3.5. interval
1.4. 특별한 용도의 Observable 만들기
__1.4.1. empty
__1.4.2. throwError
__1.4.3. never
1.5. 정리

Chapter 03. RxJS의 핵심 - Observable
1.1. 함수와 Observable
1.2. Promise와 Observable
__1.2.1. Lazy
__1.2.2. Cancellation
1.3. 함수 VS Observable VS Promise
1.4. Pull과 Push가 가지는 의미
__1.4.1. Push 방식은 데이터 처리에 따른 오류 처리가 필요 없다
__1.4.2. Push 방식은 리액티브하다
1.5. 정리

Chapter 04. RxJS 오퍼레이터를 살펴보기 전에
1.1. 마블 다이어그램
1.2. 오퍼레이터 활용법
__1.2.1. RxJS 오퍼레이터는 어떻게 찾죠?
__1.2.2. RxJS 오퍼레이터는 어떻게 학습하는 게 좋을까요?
1.3. 정리

Chapter 05. 자동완성 UI 만들기
1.1. 자동완성 UI란?
1.2. 사용자의 키입력 처리 : 사용자가 입력한 검색어는 어떻게 얻나요?
__1.2.1. 전달되는 값을 바꾸고 싶어요
1.3. 서버에서 데이터 받기 : 검색 결과는 어떻게 얻나요?
1.4. 검색어로 서버 요청하기
__1.4.1. The Observable of Observables
__1.4.2. map하고 mergeAll을 합치면 뭐라고 부르나?
1.5. 데이터는 받아왔으나... 사용할 수가 없다
__1.5.1. 403 에러 처리: 빈번한 요청은 안 돼요
__1.5.2. 422 에러 처리: 빈 검색어는 서버로 요청하면 안 돼요
__1.5.3. keyup 이벤트는 꼭! 문자만을 받지 않는다
1.6. 데이터는 왔으니 이제 그림을 그리자!
__1.6.1. 검색 결과창 만들기
1.7. 코드
1.8. 정리

Chapter 06. 자동완성 UI 사용성 개선하기
1.1. 친절한 사용자 UI
__1.1.1. 입력한 검색어가 잘 처리되고 있나요?
__1.1.2. 검색 결과가 없는데요
1.2. 열악한 네트워크 환경
__1.2.1. 이미 서버에 요청한 reqesut를 취소할 수는 없을까?
__1.2.2. switchAll은 mergeMap과 같은 간단한 오퍼레이터가 없나?
__1.2.3. 서버 응답은 항상 200 코드만을 주지 않는다
1.3. 코드
1.4. 정리

Chapter 07. 자동완성 UI와 Subject
1.1. 사소한 문제점
__1.1.1. Cold Observable과 Hot Observable
__1.1.2. Subject
__1.1.3. Subject를 이용하여 사소한 문제 해결하기
1.2. 데이터 공유가 까다롭네?
__1.2.1. ConnectableObservable 만들기
__1.2.2. multicast에 매번 subject를 생성해야 하는가?
__1.2.3. ConnectableObservable 관리하기
1.3. 코드
1.4. 정리

Chapter 08. 캐러셀 UI 만들기
1.1. 캐러셀이란?
1.2. 캐러셀 UI 준비 작업
__1.2.1. 기본 구조
__1.2.2. HTML과 CSS
__1.2.3. 작업에 필요한 변수 정의
1.3. 사용자 터치나 마우스 입력을 Observable로 만들기
1.4. 드래그 기능
__1.4.1. 원하는 데이터 흐름 만들기
__1.4.2. 원하는 데이터 값 만들기
1.5. 드롭 기능
__1.5.1. 원하는 데이터 흐름 만들기
__1.5.2. 원하는 데이터 값 만들기
__1.5.3. 아차! drop$은 drag$부터 시작했었지
1.6. 캐러셀 UI 데이터 흐름 만들기
1.7. 코드
1.8. 정리

Chapter 09. 캐러셀 UI 상태 관리하기
1.1. 상태 관리
__1.1.1. scan과 reduce
1.2. 캐러셀 Observable에 scan 적용하여 상태 관리하기
__1.2.1. 드래그와 드롭 데이터 형태 일관성 있게 맞추기
__1.2.2. scan 적용하기
1.3. 캐러셀 동작시키기
1.4. 코드
1.5. 정리

Chapter 10. 캐러셀 UI 애니메이션 만들기
1.1. RxJS 스케줄러
__1.1.1. 스케줄러는 언제 쓰나요?
__1.1.2. 스케줄러에는 어떤 것이 있나요?
1.2. 애니메이션 구현하기
__1.2.1. Animation Observable 만들기
__1.2.2. 이동 시간에 따른 '이동 거리 비율' 구하기
__1.2.3. takeWhile로 애니메이션 종료하기
__1.2.4. concat으로 애니메이션 완료 값 1 전달하기
__1.2.5. 이동 거리의 비율로 실제 이동 거리 구하기
1.3. 모듈화하기
1.4. 캐러셀에 애니메이션 적용하기
1.5. 코드
1.6. 정리

부록1. RxJS의 Subjects
1.1. BehaviorSubject
1.2. ReplaySubject
1.3. AsyncSubject
1.4. Subject를 포함하는 alias 오퍼레이터
__1.4.1. publish와 Subject
__1.4.2. share와 Subject
부록2. 자바스크립트 비동기 처리 과정과 RxJS 스케줄러
1.1. 자바스크립트 엔진
1.2. 이벤트 루프(event loop)와 큐(queue)
1.3. 자바스크립트 처리 과정
1.4. RxJS 스케줄러와 자바스크립트 비동기 작업의 종류
__1.4.1. 태스크
__1.4.2. 마이크로태스크

-3부-

Chapter 01. 버스 노선 조회 서비스 살펴보기
1.1. 준비하기
__1.1.1. 로컬 PC에 다운로드하기
__1.1.2. 로컬 PC에 관련 모듈 설치하기
__1.1.3. API 서버 시작하기
1.2. 버스 노선 조회 서비스
1.3. 서비스 분석
__1.3.1. 조회 기능
__1.3.2. 데이터 흐름으로 본 조회 기능
__1.3.3. URL 공유 기능
__1.3.4. 해시태그 관점에서 본 URL 공유 기능
1.4. 예제 파일 내용 살펴보기
__1.4.1. app.js
__1.4.2. map.js
__1.4.3. sidebar.js
__1.4.4. autocomplete.js
__1.4.5. common.js
1.5. 정리

Chapter 02. 지도 영역 만들기
1.1. 지도 dragend Observable
__1.1.1. 주변 버스 정류소 목록 가져오는 Observable
__1.1.2. 주변 버스 정류소 목록을 지도에 표현하기
__1.2. 버스 정류소 클릭 Observable
__1.2.1. 버스 정류소 정보를 버스 정류소 마커로 변경하기
__1.2.2. 버스 정류소 마커를 버스 정류소 마커 정보로 변경하기
__1.2.3. 경유하는 버스 번호 목록 가져오는 Observable
__1.2.4. 버스 정류소 마커 클릭 시 버스 정류소ID 전달하기
__1.2.5. 버스 정류소ID를 경유하는 버스 번호 목록 데이터로 변경하기
1.3. 경유하는 버스 번호 목록 그리기
__1.3.1. combineLatest로 mapBus 메소드 변경하기
__1.3.2. 정보창 그리기
__1.3.3. 정보창 제어하기
1.4. 코드
1.5. 정리

Chapter 03. 자동완성 UI 만들기
1.1. 자동완성 UI
__1.1.1. 제어 대상 엘리먼트 추출하기
__1.1.2. 사용자 입력 내용 Observable 만들기
__1.1.3. 검색어로 버스 번호 목록 조회하는 Observable 만들기
__1.1.4. 검색 결과를 초기화하는 Observable 만들기
1.2. 입력값에 따라 발생하는 스크립트 오류
__1.2.1. 검색 결과가 단일 건일 경우
__1.2.2. 검색 결과가 없거나 에러가 발생한 경우
1.3. 코드
1.4. 정리

Chapter 04. URL 공유 기능과 초기 로딩 처리하기
1.1. URL 공유 기능
__1.1.1. 해시값 변경하기
__1.1.2. 해시값 분석하기
1.2. 초기 로딩 처리하기
__1.2.1. 현재 위치 정보 얻기
__1.2.2. search$와 연결하기
__1.2.3. 현재 위치 정보로 주변 버스 정류소 지도에 표시하기
__1.2.4. 적용하기
1.3. 버스 노선 결과 표현하기
__1.3.1. 지도 영역에 결과 표현하기
__1.3.2. 사이드바 영역에 결과 표현하기
1.4. 코드
1.5. 3부를 마치며

부 록. 예제에서 사용된 오픈 API
1.1. 공공데이터포털 공공 API
1.2. 네이버 지도 API

출판사 서평

1부 RxJS 이해
1부에서는 웹 애플리케이션을 개발할 때 발생하는 문제를 RxJS가 어떻게 해결하려고 했는지에 대한 RxJS의 기술적 고민을 이야기한다. 이를 통해 RxJS가 추구하는 방향을 인지하고 RxJS를 효과적으로 사용하기 위한 배경 지식을 익힐 수 있다. 1부를 학습하면 RxJS가 추구하는 바를 명확히 알 수 있다. 2부와 3부를 모두 학습하고 다시 한번 1부를 읽어보길 권한다. 처음 읽었을 때보다 많은 것을 얻을 수 있다.

2부 RxJS 사용하기
2부에서는 본격적으로 RxJS를 사용하는 방법을 이야기를 한다. ... 더보기

Klover 리뷰 (0)

북로그 리뷰 (0) 쓰러가기

도서 구매 후 리뷰를 작성하시면
결제 90일 이내 300원, 발송 후 5일 이내 400원, 이 상품의 첫 리뷰 500원의 포인트를 드립니다.

포인트는 작성 후 다음 날 적립되며, 도서 발송 전 작성 시에는 발송 후 익일에 적립됩니다.
북로그 리뷰는 본인인증을 거친 회원만 작성 가능합니다.
(※ 외서/eBook/음반/DVD/GIFT 및 잡지 상품 제외) 안내
  • 해당도서의 리뷰가 없습니다.

문장수집 (0) 문장수집 쓰기 나의 독서기록 보기
※구매도서의 문장수집을 기록하면 통합포인트 적립 안내

교환/반품/품절안내

※ 상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

교환/반품/품절안내
반품/교환방법 마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환신청 ,
[1:1상담>반품/교환/환불] 또는 고객센터 (1544-1900)

※ 오픈마켓, 해외배송주문, 기프트 주문시 [1:1상담>반품/교환/환불]
    또는 고객센터 (1544-1900)
반품/교환가능 기간 변심반품의 경우 수령 후 7일 이내,
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
반품/교환비용 변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
반품/교환 불가 사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등
  • 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에
    해당되는 경우
(1) 해외주문도서 : 이용자의 요청에 의한 개인주문상품으로 단순변심 및 착오로 인한 취소/교환/반품 시 ‘해외주문 반품/취소 수수료’ 고객 부담 (해외주문 반품/취소 수수료 : ①서양도서-판매정가의 12%, ②일본도서-판매정가의 7%를 적용)
상품 품절 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는
이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은
    소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의
    소비자 보호에 관한 법률에 따라 처리함

바로가기

  • 우측 확장형 배너 2
  • 우측 확장형 배너 2

최근 본 상품