도서 소개
acorn+PACKT 시리즈. React.js의 설치부터 시작해 간단한 컴포넌트에서 다소 복잡한 컴포넌트까지 함께 만들어 보면서 기본적인 React.js의 활용 방법을 설명해 주고, 마지막에는 애플리케이션 아키텍처인 Flux를 활용하는 방법까지 자세히 설명한다.
출판사 리뷰
페이스북은 백엔드 기술과 웹 기술뿐만 아니라 iOS와 안드로이드로 대표되는 모바일 기술까지 IT 전 분야에 걸쳐 다양한 기술들을 오픈소스화 해 많은 개발자들이 활용하도록 하고 있다. 그리고 많은 유명 기업들이 다양한 페이스북 오픈소스 기술을 도입해 페이스북의 기대에 부응하고 있다. 스트리밍 서비스의 대표주자로 손꼽히는 넷플렉스(Netflix)를 비롯해 BBC와 NBC의 웹사이트가 React.js를 사용한다. React.js는 매우 직관적이고 효율적인 UI를 구성할 수 있도록 방안을 제시해 줄 것이다. 이 책은 React.js의 설치부터 시작해 간단한 컴포넌트에서 다소 복잡한 컴포넌트까지 함께 만들어 보면서 기본적인 React.js의 활용 방법을 설명해 주고, 마지막에는 애플리케이션 아키텍처인 Flux를 활용하는 방법까지 자세히 설명한다.
★ 이 책에서 다루는 내용 ★
■ 좀 더 효율적인 개발을 위한 강력한 React 도구 설치
■ 프로퍼티와 자식이 있는 React 엘리먼트 생성
■ 상태가 없는 React 컴포넌트와 상태 기반의 React 컴포넌트 소개
■ React 개발 과정을 빠르게 하기 위한 JSX 사용
■ React 컴포넌트에 생명주기 메소드를 이용해서 반응성 추가
■ React 컴포넌트를 다른 자바스크립트 라이브러리와 통합
■ Flux 애플리케이션 아키텍처를 React 컴포넌트와 함께 활용
■ Jest 테스트 프레임워크를 이용해서 React 컴포넌트 테스트
★ 이 책의 대상 독자 ★
이 책은 확장 가능하고 유지보수 가능한 웹 사용자 인터페이스를 개발하고자 하는 프론트엔드 개발자들을 위해 만들어졌다. 자바스크립트, HTML, CSS의 핵심 지식 일부만 알아도 React.js가 웹 개발 세계에 가져온 혁신적인 아이디어의 이점을 활용하는 데에 충분하다. 제이쿼리나 Angular.js를 다뤄 본 경험이 있다면, React.js가 어떻게 다른지 그리고 여러 가지 라이브러리들과 통합시켜서 어떻게 이용할지 이해하는 데 큰 도움이 될 것이다.
★ 이 책의 구성 ★
1장, '필요한 도구 설치'에서는 이 책의 목표를 간결하게 서술하고, React 애플리케이션을 효율적으로 개발하는 데 필요한 최신 도구들을 설명한다. 각 도구들을 소개하고 설치하는 방법들에 대해 단계별로 알아본다. 그런 다음, 이 책을 통해 개발하게 될 프로젝트의 구조를 생성한다.
2장, '첫 React 엘리먼트 생성'에서는 React를 설치하는 방법을 설명하고 가상 DOM을 소개한다. 그런 다음, React 엘리먼트 정의와 네이티브 자바스크립트 문법을 이용해서 생성하고 렌더링하는 방법을 설명한다. 마지막으로 JSX 문법을 소개하고 JSX를 이용해서 React 엘리먼트를 만드는 방법을 살펴본다.
3장, '첫 React 컴포넌트 생성'에서는 React 컴포넌트를 소개한다. 상태가 없는(stateless) React 컴포넌트와 상태 기반(stateful)의 React 컴포넌트 간의 차이점, 그리고 어느 컴포넌트를 사용할지 결정하는 방법을 설명한다. 그런 다음, 두 종류를 생성하는 과정을 살펴본다.
4장, 'React 컴포넌트에 반응성 추가'에서는 React로 문제를 해결하는 방법을 설명하고 React 애플리케이션을 계획하는 과정을 단계별로 알아본다. 이 책에서 개발하는 React 애플리케이션 전체를 캡슐화하는 React 컴포넌트를 생성한다. 부모 React 컴포넌트와 자식 컴포넌트 사이의 관계를 설명한다.
5장, '다른 라이브러리와 함께 React 컴포넌트 사용'에서는 서드파티 자바스크립트 라이브러리와 함께 React 컴포넌트를 사용하는 방법을 살펴본다. React 컴포넌트의 생명주기를 소개하고, 마운트 메소드를 사용하는 방법을 설명한다. 그리고 이 책의 프로젝트를 위한 새로운 React 컴포넌트를 생성한다.
6장, 'React 컴포넌트 업데이트'에서는 React 컴포넌트 생명주기의 업데이트 메소드를 소개한다. 자바스크립트에서 CSS 스타일을 사용하는 방법을 알아보고, 기본 컴포넌트의 프로퍼티를 검사하고 설정하는 방법을 설명한다.
7장, '복잡한 React 컴포넌트 생성'에서는 좀 더 복잡한 React 컴포넌트를 개발하는 방법에 초점을 맞춘다. 여러 가지의 React 컴포넌트를 구현하는 방법과 해당 컴포넌트들을 하나로 결합하면서도 정상 작동되는 React 애플리케이션으로 만드는 방법에 대해 자세히 살펴본다.
8장, 'Jest를 사용한 React 애플리케이션 테스트'에서는 유닛 테스트 개념과 Jest를 이용해서 유닛 테스트를 작성하고 실행하는 방법을 설명한다. 또한 React 컴포넌트를 테스트하는 방법도 보여준다. 테스트 스위트, 스펙, 예상 결과, 부합기(matcher)에 대해 알아본다.
9장, 'Flux를 사용해 React 아키텍처 향상시키기'에서는 React 애플리케이션 아키텍처를 향상시키는 방법을 알아본다. Flux 아키텍처를 소개하고 디스패처, 스토어, 액션 생성자에 대해 설명한다.
10장, 'Flux를 사용한 React 애플리케이션의 유지보수 준비'에서는 Flux를 이용해서 React 애플리케이션에 대한 우려 사항들을 분리하는 방법을 설명한다. 장차 유지보수가 어렵지 않도록 React 애플리케이션을 리팩토링한다.
작가 소개
저자 : 아르테미 페도세예프
영국 런던에 거주 중인 기술 수석이다. 2000년대 초반부터 웹 개발자로 일해 왔으며, 독학한 웹 개발자다. 아일랜드의 코크대학교(University College Cork)에서 컴퓨터 과학 학사 학위를 취득했다. IGNITE Graduate Business Innovation Programme에 참여해 Most Innovative Project 상을 받은 웹 사이트를 개발하고 출시했다.졸업 후에 지역 스타트업 기업들의 제품을 개발하는 데 도움을 주기 위해 런던으로 옮겼다. 자바스크립트, Node.js, HTML5, CSS3, 그리고 다른 최신 웹 기술들을 이용해 개발을 진행했다. 스타트업 산업에서 경력을 쌓은 후 임페리얼 칼리지 런던(Imperial College London)에 합류해 연구 및 개발, 프로젝트 작업을 했으며, 더 나아가 공공 건강 시설의 여러 웹 애플리케이션 프론트엔드 개발을 주도할 기회까지 부여받았다. React.js와 Flux를 이용해서 WGSA.net과 Microreact.org의 프론트엔드 아키텍처를 생성하는 데 중요한 역할을 했다. Snapkite 엔진, Snapkite 스트림 클라이언트, 그리고 그 외 다른 프로젝트 등 다수의 오픈소스 프로젝트를 생성했다. 이 프로젝트들은 모두 깃허브(https://github.com/fedosejev)에서 확인 가능하다. 또한 웹사이트(http://react.tips)를 운영하고 있다.
목차
1 필요한 도구 설치
프로젝트 시작
Node.js와 npm 설치
깃 설치
트위터 스트리밍 API를 이용해 데이터 획득
Snapkite 엔진을 이용해 데이터 필터링
프로젝트 구조 생성
package.json 생성
Node.js 모듈 재사용
Gulp.js로 빌드
웹 페이지 생성
요약
2 첫 React 엘리먼트 생성
가상 DOM의 이해
React 설치
자바스크립트를 이용해 React 엘리먼트 생성
type 매개변수
props 매개변수
children 매개변수
React 엘리먼트 렌더링
JSX를 이용해 React 엘리먼트 생성
요약
3 첫 React 컴포넌트 생성
상태 없음 vs. 상태 기반
상태를 갖지 않는 첫 React 컴포넌트 생성
첫 상태 기반 React 컴포넌트 생성
요약
4 React 컴포넌트에 반응성 추가
React를 사용한 문제 해결
React 애플리케이션 계획
컨테이너 React 컴포넌트 생성
요약
5 다른 라이브러리와 함께 React 컴포넌트 사용
React 컴포넌트에서 다른 라이브러리 사용
React 컴포넌트의 생명주기 메소드
마운트 메소드
getInitialState 메소드
componentWillMount 메소드
componentDidMount 메소드
마운트 해제 메소드
componentWillUnmount 메소드
요약
6 React 컴포넌트 업데이트
컴포넌트 생명주기의 업데이트 메소드
componentWillReceiveProps 메소드
shouldComponentUpdate 메소드
co