책 소개
소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/pro-react16)
요약
리액트는 가장 인기 있는 웹 UI 라이브러리다. 이 책은 기초부터 시작해 정교한 고급 기능까지 리액트를 최대한으로 설명한다. 또한 리액트로 웹 애플리케이션을 개발할 때 필요한 다양한 도구와 기법도 빠뜨리지 않았다. 이 책을 통해 정교하고 풍부한 UI 기반에서 강력한 아키텍처와 응답성 높은 웹 애플리케이션 개발 방법을 배우고 실무에 적용할 수 있다.
이 책에서 다루는 내용
■ 리액트 아키텍처의 확실한 이해
■ 리액트를 사용한 풍부하고 동적인 웹앱 클라이언트 제작
■ 리덕스를 사용한 데이터 스토어 제작
■ REST와 그래프QL로 데이터 사용
■ 리액트 프로젝트 테스트
이 책의 대상 독자
리액트를 사용해 동적인 클라이언트 측 애플리케이션을 제작하고자 하는 자바스크립트 개발자를 위한 책이다.
이 책의 구성
1부, 리액트 시작하기
1부는 리액트 개발을 시작하는 데 필요한 정보를 제공한다. 1장에서 간단한 리액트 애플리케이션의 제작 방법을 익히고 3장과 4장에서 HTML, CSS, 자바스크립트와 같은 리액트 개발의 핵심 기술에 관한 기초 지식을 복습한다. 5장부터 8장까지는 SportsStore라고 하는 좀 더 현실적인 애플리케이션 제작 과정을 거친다.2부, 리액트 주무르기
2부에서는 대부분의 프로젝트에 필요한 리액트의 핵심 기능을 다룬다. 리액트에는 많은 기능이 내장돼 있다. 예제 애플리케이션을 위해 커스텀 코드와 콘텐츠를 추가하는 방식으로 기능을 깊이 있게 설명할 것이다.3부, 리액트 애플리케이션 완성하기
리액트는 복잡한 애플리케이션에 필요한 고급 기능을 별도의 패키지를 통해 제공한다. 3부에서는 중요한 패키지들을 소개하고, 작동 원리를 설명하며, 어떻게 리액트의 핵심 기능에 적용할 수 있는지 알아본다목차
목차
- 1부. 리액트 시작하기
- 1장. 첫 리액트 애플리케이션
- 개발 환경 준비
- Node.js 설치
- Create React App 설치
- 깃 설치
- 에디터 설치
- 브라우저 설치
- 프로젝트 생성
- 프로젝트 구조
- 부트스트랩 CSS 프레임워크
- 개발 도구
- 임시 콘텐츠 대체
- 동적 콘텐츠
- 상태 데이터의 변경
- 할 일 목록 애플리케이션에 기능 추가
- 할 일 목록 보여주기
- 컴포넌트 추가
- 자식 컴포넌트 사용
- 마무리 작업
- 완료된 할 일의 시각적 처리
- 데이터의 지속 저장
- 정리
- 개발 환경 준비
- 2장. 리액트의 이해
- 리액트는 필수인가?
- 라운드 트립 애플리케이션
- 싱글 페이지 애플리케이션
- 애플리케이션 복잡성
- 필요한 사전 지식
- 필요한 개발 환경
- 이 책의 구성
- 1부: 리액트 시작하기
- 2부: 리액트 주무르기
- 3부: 리액트 애플리케이션 완성하기
- 예제의 양
- 이 책의 예제 코드
- 이 책의 정오표
- 연락 방법
- 정리
- 리액트는 필수인가?
- 3장. HTML, JSX, CSS 핵심 정리
- 준비 작업
- HTML 파일과 컴포넌트 준비
- 예제 실행
- HTML과 DOM 엘리먼트의 이해
- 엘리먼트 콘텐츠의 이해
- 속성의 이해
- HTML 엘리먼트의 동적 생성
- 리액트 컴포넌트를 사용한 엘리먼트의 동적 생성
- 리액트 엘리먼트에서의 표현식
- 표현식과 정적 콘텐츠의 결합
- 표현식 안에서의 계산
- 컴포넌트 프로퍼티와 메소드 접근
- 표현식으로 프로퍼티 값 설정
- 표현식으로 이벤트 처리
- 부트스트랩 소개
- 기본 부트스트랩 클래스 적용
- 부트스트랩으로 그리드 생성
- 부트스트랩으로 테이블 스타일 적용
- 부트스트랩으로 폼 스타일 적용
- 정리
- 준비 작업
- 4장. 자바스크립트 핵심 정리
- 준비 작업
- 자바스크립트 구문
- 자바스크립트 함수
- 파라미터가 있는 함수
- 결과를 리턴하는 함수
- 다른 함수의 인자로 함수 사용
- 변수와 타입
- 기본 데이터 타입
- 자바스크립트 연산자
- 조건문
- 등치 연산자와 일치 연산자
- 명시적 타입 변환
- 배열
- 배열 리터럴
- 배열 콘텐츠의 읽기와 변경
- 배열 콘텐츠 열거
- 스프레드 연산자
- 배열의 내장 메소드
- 객체
- 객체 리터럴
- 메소드로서의 함수
- 클래스
- 다른 객체로 프로퍼티 복사
- 명명된 파라미터로 프로퍼티 읽기
- 자바스크립트 모듈
- 자바스크립트 모듈의 생성과 사용
- 명명된 기능 내보내기
- 여러 개의 명명된 기능 정의하기
- 자바스크립트 프로미스
- 비동기 작업의 문제점
- 프로미스 사용하기
- 비동기 작업을 다루는 쉬운 방법
- 정리
- 5장. SportsStore: 현실적인 애플리케이션
- 프로젝트 준비
- 추가 패키지 설치
- CSS 스타일시트 추가
- 웹 서비스 준비
- 예제 애플리케이션 실행
- 데이터 스토어
- 데이터 스토어 액션과 액션 생성자
- 쇼핑 기능 만들기
- 상품과 카테고리 컴포넌트 제작
- 데이터 스토어 및 URL 라우터 연결
- 애플리케이션에 Shop 추가
- 카테고리 버튼 개선
- 쇼핑 카트 추가
- 데이터 스토어 확장
- CartSummary 컴포넌트 추가
- CartDetails 컴포넌트 추가
- 라우팅 설정에 카트 URL 추가
- 정리
- 프로젝트 준비
- 6장. SportsStore: REST와 결제 시스템
- 준비 작업
- RESTful 웹 서비스
- 설정 파일 만들기
- 데이터 소스 생성
- 데이터 스토어 확장
- 액션 생성자 수정
- 페이지네이션
- 웹 서비스 페이지네이션
- HTTP 요청과 액션 변경
- 데이터 로딩 컴포넌트 제작
- ShopConnector 컴포넌트 수정
- 카테고리 버튼 수정
- 페이지네이션 제어
- 결제 처리 시스템
- REST 데이터 소스와 데이터 스토어 확장
- 결제 폼 제작
- ShopConnector 컴포넌트 다듬기
- 정리
- 7장. SportsStore: 관리자 기능
- 준비 작업
- 예제 애플리케이션 실행
- 그래프QL 서비스 제작
- 그래프QL 스키마 정의
- 그래프QL 리졸버 정의
- 서버 갱신
- 주문 관리 기능
- 주문 테이블 컴포넌트 정의
- 커넥터 컴포넌트 정의
- 그래프QL 클라이언트 구성
- 뮤테이션 설정
- 상품 관리 기능
- 상품 테이블 컴포넌트 연결
- 상품 편집 컴포넌트 제작
- 라우팅 설정 추가
- 정리
- 준비 작업
- 8장. SportsStore: 인증과 배포
- 준비 작업
- 그래프QL 요청에 대한 인증
- 인증 시스템의 이해
- 인증 컨텍스트 생성
- 인증 폼 만들기
- 관리자 기능의 보호
- 관리자 기능으로의 내비게이션 링크 추가하기
- 애플리케이션 배포 준비
- 관리자 기능에 지연 로딩 적용
- 데이터 파일 만들기
- 요청 URL 변경
- 애플리케이션 빌드
- 애플리케이션 서버 제작
- 배포 버전과 서버 테스트
- SportsStore 애플리케이션의 컨테이너화
- 도커 설치
- 애플리케이션 준비
- 도커 컨테이너 생성
- 애플리케이션 실행
- 정리
- 2부. 리액트 주무르기
- 9장. 리액트 프로젝트의 이해
- 준비 작업
- 리액트 프로젝트의 구조
- 소스 코드 폴더
- 패키지 폴더
- 리액트 개발 도구
- 컴파일과 변환 과정의 이해
- 개발 HTTP 서버
- 정적 콘텐츠
- 에러 디스플레이
- 린터의 이해
- 개발 도구 설정
- 디버깅
- 애플리케이션의 상태 조사
- 브라우저 디버거 사용하기
- 정리
- 10장. 컴포넌트와 props
- 준비 작업
- 컴포넌트의 이해
- HTML 콘텐츠 렌더링
- 다른 컴포넌트의 렌더링
- props의 이해
- 부모 컴포넌트에서 props 정의
- 자식 컴포넌트에서 props 받기
- 자바스크립트와 props의 조합
- 콘텐츠의 조건부 렌더링
- 배열 렌더링
- 복수의 엘리먼트 렌더링
- 렌더링하지 않기
- props 변경 시도
- 함수 props
- 함수 prop에 인자 사용
- 자식 컴포넌트에 props 전달
- props 일괄 전달
- 기본 prop 값 제공
- prop 값의 타입 검사
- 정리
- 11장. 상태 유지 컴포넌트
- 준비 작업
- 컴포넌트 유형의 이해
- 무상태 컴포넌트의 이해
- 상태 유지 컴포넌트의 이해
- 상태 유지 컴포넌트 제작
- 컴포넌트 클래스의 이해
- import 구문의 이해
- render 메소드의 이해
- 상태 유지 컴포넌트 props의 이해
- 상태 데이터 추가
- 상태 데이터 읽기
- 상태 데이터 변경
- 상태 데이터 변경의 함정
- 훅을 사용한 상태 유지 컴포넌트
- 상태 데이터 끌어올리기
- 상태 데이터 더 끌어올리기
- prop 타입과 기본값 정의
- 정리
- 12장. 이벤트
- 준비 작업
- 이벤트의 이해
- 이벤트 처리 메소드 사용
- 이벤트 객체의 이해
- 이벤트 핸들러 호출에 커스텀 인자 사용
- 기본 동작 취소
- 이벤트 전파
- 타깃 단계와 버블 단계
- 캡처 단계
- 이벤트 단계 판별
- 이벤트 전파 중단
- 정리
- 13장. 재조정과 생명주기
- 준비 작업
- 예제 컴포넌트 작성
- 콘텐츠 렌더링에 대한 이해
- 갱신 과정의 이해
- 재조정 과정의 이해
- 목록 재조정의 이해
- 명시적 재조정
- 컴포넌트 생명주기
- 마운트 단계
- 업데이트 단계
- 언마운트 단계
- 이펙트 훅
- 고급 생명주기 메소드
- 불필요한 컴포넌트 업데이트의 방지
- props 값으로부터 상태 데이터 갱신
- 정리
- 준비 작업
- 14장. 애플리케이션 컴포지션
- 준비 작업
- 예제 컴포넌트 작성
- 기본 컴포넌트 관계
- children prop 사용하기
- children prop 다루기
- 특성화 컴포넌트
- 고차 컴포넌트
- 상태 유지 HOC
- HOC의 조합
- 렌더링 prop
- 인자가 있는 렌더링 prop
- 전역 데이터를 위한 컨텍스트
- 컨텍스트 정의
- 컨텍스트 소비자
- 컨텍스트 제공자
- 컨텍스트 데이터 변경
- 컨텍스트 API 사용
- 에러 경계
- 에러 경계 컴포넌트
- 정리
- 준비 작업
- 15장. 폼과 데이터 검증
- 준비 작업
- 예제 컴포넌트 작성
- 개발 도구 실행
- 폼 엘리먼트 사용
- select 엘리먼트
- 라디오 버튼
- 체크박스
- 체크박스를 사용한 배열 채우기
- 텍스트 영역
- 폼 데이터 검증
- 검증 규칙 정의
- 컨테이너 컴포넌트 제작
- 검증 메시지 표시
- 폼 검증 적용
- 그 밖의 엘리먼트와 데이터 타입의 검증
- 폼에 특정적인 검증
- 정리
- 준비 작업
- 16장. ref와 포털
- 준비 작업
- ref 생성
- 비제어 폼 컴포넌트
- 콜백 함수를 사용한 ref 생성
- 비제어 폼 컴포넌트의 검증
- ref와 생명주기
- 다른 라이브러리나 프레임워크를 위한 ref
- 자식 컴포넌트의 콘텐츠에 접근
- ref 포워딩
- 포털
- 정리
- 17장. 유닛 테스트
- 준비 작업
- 컴포넌트 작성
- 예제 애플리케이션 실행
- 간단한 유닛 테스트
- 얕은 렌더링을 사용한 컴포넌트 테스트
- 전체 렌더링을 사용한 컴포넌트 테스트
- props, 상태, 메소드, 이벤트를 사용한 테스트
- 메소드 테스트
- 이벤트 테스트
- 컴포넌트 상호작용 테스트
- 정리
- 준비 작업
- 3부. 리액트 애플리케이션 완성하기
- 18장. 온전한 애플리케이션 제작
- 프로젝트 생성
- 개발 도구 실행
- 예제 애플리케이션 작성
- 상품 관련 개발
- 공급업체 관련 개발
- 애플리케이션 완성하기
- 예제 애플리케이션의 한계
- 정리
- 프로젝트 생성
- 19장. 리덕스 데이터 스토어
- 준비 작업
- 데이터 스토어 생성
- 데이터 타입 정의
- 초기 데이터 정의
- 액션 타입 정의
- 액션 생성자 정의
- 리듀서 정의
- 데이터 스토어 생성
- 데이터 스토어 사용
- 최상위 컴포넌트에 데이터 스토어 적용
- 상품 데이터 연결
- 공급업체 데이터 연결
- 데이터 스토어 확장
- 스토어에 상태 데이터 추가
- 액션 타입과 액션 생성자 정의
- 리듀서 정의
- 스토어에 상태 데이터 기능 통합
- 컴포넌트와 상태 데이터 연결
- 복수의 액션 디스패치
- 참조의 필요성
- 정리
- 20장. 데이터 스토어 API
- 준비 작업
- 리덕스 데이터 스토어 API
- 데이터 스토어 상태 취득
- 데이터 스토어의 변경 감시
- 액션 디스패치
- 커넥터 컴포넌트 제작
- 리듀서 개선
- 데이터 스토어 미들웨어
- 데이터 스토어 개선
- 개선자 적용
- 리액트 리덕스 API
- 고급 연결 기능
- 정리
- 21장. URL 라우팅
- 준비 작업
- URL 라우팅 시작하기
- Link 컴포넌트
- Route 컴포넌트
- 내비게이션에 대한 응답
- 컴포넌트와 콘텐츠 선택
- URL 매칭
- 단일 Route 매칭
- 리다이렉션 사용
- 내비게이션 링크 렌더링
- 활성화된 링크 표시
- 라우터 선택
- HashRouter 컴포넌트
- 정리
- 22장. 고급 URL 라우팅
- 준비 작업
- 라우팅 인식 컴포넌트
- match prop
- location prop
- URL 파라미터 사용
- 다른 컴포넌트에서 라우팅 데이터 접근
- 라우팅 데이터의 직접 접근
- HOC를 사용한 라우팅 데이터 접근
- 프로그래밍 방식의 내비게이션
- 컴포넌트를 사용한 프로그래밍 방식의 내비게이션
- 내비게이션의 사용자 확정
- 프로그래밍 방식의 라우트 생성
- 데이터 스토어 컴포넌트와 함께 라우팅 사용
- 디스플레이 컴포넌트 교체
- 편집기 컴포넌트 수정
- 테이블 컴포넌트 수정
- 라우팅 설정의 마무리
- 정리
- 23장. RESTful 웹 서비스
- 준비 작업
- 프로젝트에 패키지 추가
- 웹 서비스 준비
- 컴포넌트와 라우트 추가
- 웹 서비스와 예제 애플리케이션 실행
- RESTful 웹 서비스의 이해
- 웹 서비스 소비하기
- 데이터 소스 컴포넌트 제작
- 컴포넌트에서 데이터 가져오기
- 데이터의 저장, 갱신, 삭제
- 에러 처리
- 데이터 스토어와 함께 웹 서비스 소비하기
- 신규 미들웨어 제작
- 데이터 스토어에 미들웨어 추가
- 애플리케이션 완성
- 정리
- 준비 작업
- 24장. 그래프QL의 이해
- 준비 작업
- 그래프QL의 이해
- 그래프QL 서버 제작
- 스키마 작성
- 리졸버 제작
- 서버 제작
- 그래프QL 쿼리 작성
- 연관 데이터 질의
- 인자를 사용한 쿼리
- 그래프QL 뮤테이션
- 그 밖의 그래프QL 기능
- 요청 변수
- 다중 요청
- 쿼리 프래그먼트
- 정리
- 25장. 그래프QL 소비하기
- 준비 작업
- 패키지 추가
- 그래프QL 서버를 위한 데이터 변경
- 스키마와 리졸버 갱신
- 그래프QL 서버에 개발 도구 통합
- 그래프QL 서비스 소비하기
- 쿼리와 뮤테이션 정의
- 데이터 소스 정의
- 격리된 컴포넌트 설정
- 데이터 스토어와 함께 그래프QL 사용
- 그래프QL 데이터 형식 조정
- 그래프QL 클라이언트 프레임워크
- 클라이언트 설정
- 그래프QL 컴포넌트 제작
- 뮤테이션 사용
- 공급업체 데이터와 편집 기능 추가
- 준비 작업