타입스크립트 실전 프로젝트 [예제 프로젝트를 통해 배우는 타입스크립트 웹 개발]
- 원서명Advanced TypeScript Programming Projects: Build 9 different apps with TypeScript 3 and JavaScript frameworks such as Angular, React, and Vue (ISBN 9781789133042)
- 지은이피터 오한론(Peter O’Hanlon)
- 옮긴이김유성
- ISBN : 9791161754888
- 35,000원
- 2021년 01월 25일 펴냄 (절판)
- 페이퍼백 | 492쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 웹 프로페셔널
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
다양한 예제 프로젝트로 타입스크립트 객체지향 프로그래밍을 비롯해 부트스트랩, 리액트, Vue, 앵귤러와 같이 인기 있는 UI 프레임워크 사용법을 알아본다. 또한 그래프QL, MEAN 스택을 통한 서버 개발, 도커를 통한 서버 배포, Socket.IO를 통한 웹소켓, 파이어베이스와 같은 매니지드 클라우드 서비스 사용과 TensorFlow.js를 비롯한 다양한 최신 기술을 살펴본다.
이 책에서 다루는 내용
■ 타입스크립트로 일반적인 패턴을 사용해 코드를 작성하는 방법
■ 타입스크립트로 유명 프레임워크와 라이브러리를 사용하는 방법
■ 서버와 클라이언트에서 타입스크립트를 함께 사용할 때의 장점
■ 그래프QL과 텐서플로 같은 패러다임을 적용하는 방법
■ 유명 클라우드 기반 인증 서비스를 사용하는 방법
■ 타입스크립트와 C#을 결합해 ASP.NET Core 애플리케이션을 작성하는 방법
이 책의 대상 독자
기본적인 타입스크립트에 익숙한 사람을 대상으로 한다. 타입스크립트 컴파일러(tsc)로 설정 파일을 빌드하고 코드를 컴파일하는 방법과 타입스크립트의 타입 안정성, 함수, 클래스 등과 같은 기본 사항을 알고 있다면, 이 책에서 새로운 지식을 얻을 수 있을 것이다. 타입스크립트에 대한 고급 지식을 갖췄다면, 이전에 흥미를 느꼈지만 사용하지 않았던 기술의 다양한 면을 볼 수 있을 것이다.
이 책의 구성
1장, ‘타입스크립트 고급 기능’에서는 공용체(union) 타입, 교차(intersection) 타입, 사용자 선언 타입, 데코레이터(decorator)를 사용한 관점지향 프로그래밍(AOP, Aspect-Oriented Programming)과 같이 이전까지 만나보지 못했던 타입스크립트의 기능을 소개한다. 1장을 통해 프로 코더로서 매일 사용하는 다양한 타입스크립트 기술에 익숙해질 수 있다.
2장, ‘타입스크립트로 마크다운 에디터 만들기’에서는 간단한 마크다운 에디터로 실제 프로젝트를 처음 작성해본다. 웹 페이지의 텍스트 블록에 연결하는 간단한 파서를 만들고 사용자가 마크다운 태그를 입력하면 파서를 사용해 태그를 식별하고 미리보기 영역에 반영한다. 코드를 작성하면서 디자인 패턴을 사용해 타입스크립트로 견고한 솔루션을 만드는 방법을 살펴본다.
3장, ‘리액트 부트스트랩으로 개인 주소록 만들기’에서는 유명한 리액트 라이브러리로 개인 주소록 관리 프로그램을 만든다. 애플리케이션을 작성하면서 리액트가 특별한 TSX 파일로 타입스크립트와 HTML 파일을 한데 섞어 사용자 컴포넌트를 만드는 방법을 살펴본다. 또한 state와 바인딩을 사용해 사용자가 값을 바꾸면 리액트가 데이터 모델을 업데이트하는 방법도 살펴본다. 브라우저 자체의 IndexedDB를 데이터베이스로 사용해 정보의 입력, 저장, 조회가 가능한 UI를 만들고 컴포넌트가 입력값이 올바른지 확인하는 검증 절차를 적용하는 방법을 살펴보는 것이다.
4장, ‘MEAN 스택으로 사진 갤러리 만들기’에서는 사진 갤러리를 만들면서 처음으로 MEAN 스택(MEAN stack)을 다룬다. MEAN 스택은 클라이언트와 서버 양쪽에서 실행하는 애플리케이션을 만드는 데 협력하는 몇몇 기술을 설명하는 용어다. MEAN 스택으로 사진 갤러리 애플리케이션을 작성하고 UI로는 앵귤러, 사용자가 업로드한 사진을 저장하는 데는 몽고DB(MongoDB)를 사용한다. 애플리케이션을 만들 때는 앵귤러의 힘을 빌려 서비스와 컴포넌트를 만든다. 동시에 앵귤러 머티리얼을 사용해 매력적인 UI를 만드는 방법도 살펴본다.
5장, ‘그래프QL과 아폴로로 만드는 앵귤러 할 일 관리 애플리케이션’에서는 클라이언트와 서버 간 통신에 꼭 REST를 사용하지 않아도 된다는 아이디어를 소개한다. 많은 관심을 얻고 있는 그래프QL을 사용해 그래프QL 서버와 클라이언트를 통해 여러 지점에서 데이터를 소비하고 갱신하는 애플리케이션을 만든다. 5장에서 만드는 앵귤러 애플리케이션은 사용자의 할 일 관리 목록(list of to-do items)을 관리하고 템플릿(template)을 사용해 읽기 전용-편집 상태를 교체하는 것 같은 앵귤러 기능을 보여준다. 더불어 앵귤러가 제공하는 탁월한 사용자 입력 검증 기능도 살펴본다.
6장, ‘Socket.IO를 사용한 채팅방 만들기’에서는 REST 통신에 의존하지 않는 방법을 더 깊이 살펴본다. 앵귤러 애플리케이션에서 클라이언트/서버 간의 장기간 접속을 유지하는 방법을 다룬다. 클라이언트와 서버 간 접속이 영구적으로 열려 있는 것처럼 보이므로 메시지를 서로 주고받을 수 있다. Socket.IO를 사용해 채팅방 애플리케이션을 작성한다. 외부 인증 제공 서비스로 애플리케이션 보안을 강화해 암호를 일반 텍스트로 저장하는 것 같은 부끄러운 인증 실패를 피할 수 있다.
7장, ‘파이어베이스를 사용한 클라우드 기반 앵귤러 지도’에서는 두 가지 클라우드 기반 서비스를 사용해 마지막 앵귤러 애플리케이션을 작성한다. 하나는 Bing 지도로, 지도 서비스에 서드파티로 가입하는 방법을 살펴보고 애플리케이션에 클라우드 기반 지도를 통합한다. 이 서비스의 규모에 의한 비용 효과도 살펴본다. 지도를 표시하고 사용자는 관심 지역을 저장할 수 있다. 데이터는 구글의 파이어베이스(Firebase) 클라우드 플랫폼에 별도로 저장한다.
8장, ‘리액트와 마이크로서비스로 CRM 만들기’에서는 리액트와 MEAN 스택 경험을 기반으로 리액트 기반 스택으로 작업하는 방법을 소개한다. MEAN을 처음 만났을 때 단일 애플리케이션의 엔드포인트에 대해 이야기하고자 REST를 사용했다. 8장의 애플리케이션에서는 여러 개의 마이크로서비스로 단순화한 리액트 기반 CRM 시스템을 만드는 방법을 이야기한다. 마이크로서비스가 무엇인지, 언제 사용하는지를 살펴보고 추가로 스웨거(Swagger)로 REST API를 설계하고 문서화하는 방법을 살펴본다. 8장의 가장 중요한 부분은 도커(Docker)를 소개하고 컨테이너 내부에서 서비스를 실행하는 방법을 보여주는 것이다. 현재 컨테이너는 애플리케이션 배포를 단순화하는 방법으로 애플리케이션을 개발할 때 개발자들 사이에서 가장 선호하는 주제이면서 사용하기에도 어렵지 않다.
9장, ‘Vue.js와 TensorFlow.js로 만드는 이미지 인식’에서는 웹 브라우저에서 TensorFlow.js를 사용해 머신러닝을 사용하는 방법을 소개한다. Vue.js 프레임워크와 사전 훈련된 모델을 사용해 이미지를 식별하는 애플리케이션을 작성한다. 스포츠 분야에서 코칭할 때 활용할 수 있도록 웹 카메라로 어떤 자세를 취하는지 감지하고 자세를 추적하도록 확장할 수 있는 자세 감지 애플리케이션을 만드는 방법을 살펴본다.
10장, ‘ASP.NET Core로 음악 라이브러리 만들기에서는 UI를 만드는 데 타입스크립트를 주력 언어로 사용해 다수의 애플리케이션을 작성한다. ASP.NET Core를 써서 아티스트 이름을 입력해 Discogs 음악 API를 통해 곡에 대한 상세 정보를 검색하는 음악 라이브러리 애플리케이션을 작성한다. C#과 타입스크립트를 조합해 Discog에 쿼리(query)를 실행하고 UI를 만든다.
목차
목차
- 1장. 타입스크립트 고급 기능
- 필요 기술
- tsconfig로 미래에 대비하는 타입스크립트 빌드
- 타입스크립트 고급 기능 소개
- 공용체에 서로 다른 타입 사용하기
- 교차 타입으로 타입 조합
- 타입 별칭으로 타입 선언 단순화
- 객체 전개 구문으로 비구조화 할당
- 나머지 속성으로 객체 구조 분해
- 나머지 연산자로 여러 개의 파라미터를 변수에 복사
- 데코레이터로 AOP 구현
- 믹스인을 통한 타입 합성
- 차별 타입과 제네릭으로 동일한 코드 사용
- 맵을 이용한 값 연결
- 프로미스와 async/await으로 비동기 코드 만들기
- 부트스트랩으로 UI 만들기
- 요약
- 질문
- 2장. 타입스크립트로 마크다운 에디터 만들기
- 기술적 요구 사항
- 프로젝트 개요
- 간단한 HTML 프로젝트로 시작
- 간단한 마크다운 파서 작성
- 부트스트랩 UI 만들기
- 마크다운 태그를 HTML 태그에 매핑
- 마크다운 문서로 변환된 마크다운 표현하기
- 방문자 패턴으로 마크다운 문서를 업데이트
- 방문자 패턴이란
- 방문자 패턴 적용
- 책임 연쇄 패턴으로 적용할 태그 결정
- 하나로 모으기
- 요약
- 질문
- 더보기
- 3장. 리액트 부트스트랩으로 개인 주소록 만들기
- 기술적 요구 사항
- 프로젝트 개요
- 컴포넌트 시작
- 타입스크립트를 지원하는 리액트 부트스트랩 프로젝트 만들기
- 가상 레이아웃 만들기
- 애플리케이션 만들기
- tslint로 코드 포매팅
- 부트스트랩 추가
- 리액트에서 tsx 컴포넌트 사용
- 리액트가 가상 DOM에 대응하는 방법
- 리액트 App 컴포넌트
- 상세 정보 표시 인터페이스
- 값 바인딩으로 업데이트 단순화
- 사용자 입력 검증과 검증자 사용법
- 주소 검증
- 이름 검증
- 전화번호 검증
- 검증 작업을 리액트 컴포넌트에 연결
- IndexedDB 데이터베이스를 생성해 데이터 전송
- state에 액티브 레코드 추가
- 데이터베이스에서 상세 주소 가져오기
- 개선
- 요약
- 질문
- 더 읽을거리
- 4장. MEAN 스택으로 사진 갤러리 만들기
- 기술적 요구 사항
- MEAN 스택
- 프로젝트 개요
- 시작하기
- MEAN 스택으로 앵귤러 사진 갤러리 만들기
- 앵귤러 이해하기
- 애플리케이션 만들기
- 앵귤러 머티리얼로 UI 만들기
- 머티리얼로 내비게이션 추가
- 첫 번째 컴포넌트 만들기 - 파일 업로드 컴포넌트
- 익스프레스 도입
- 라우팅 지원
- 이미지 표시
- 보이는 다이얼로그 감싸기
- 요약
- 질문
- 더 읽을거리
- 5장. 그래프QL과 아폴로로 만드는 앵귤러 할 일 관리 애플리케이션
- 기술적 요구 사항
- 그래프QL과 REST 사이의 관계
- 프로젝트 개요
- 시작하기
- 그래프QL과 앵귤러로 할 일 관리 애플리케이션 만들기
- 애플리케이션 만들기
- 그래프QL 스키마 생성
- 그래프QL 스키마 리졸버 만들기
- 아폴로 서버 사용
- 그래프QL 앵귤러 클라이언트
- 페이지 컴포넌트에 내용 추가
- 요약
- 질문
- 더 읽을거리
- 6장. Socket.IO를 사용한 채팅방 만들기
- 기술적 요구 사항
- Socket.IO를 사용한 클라이언트/서버 간 장기 접속 커뮤니케이션
- 프로젝트 개요
- Socket.IO와 앵귤러 시작
- Socket.IO, 앵귤러, Auth0를 사용한 채팅방 애플리케이션 만들기
- 애플리케이션 만들기
- 서버에 Socket.IO 지원 추가
- 채팅방 클라이언트 만들기
- Auth0을 사용한 인증과 인가
- 보안 라우팅 사용
- 클라이언트에 채팅 기능 추가
- GeneralchatComponent로 애플리케이션 종료
- 요약
- 질문
- 더 읽을거리
- 7장. 파이어베이스를 사용한 클라우드 기반 앵귤러 지도
- 기술적 요구 사항
- 모던 애플리케이션과 클라우드 서비스로의 이동
- 프로젝트 개요
- 앵귤러에서 Bing 지도로 시작하기
- Bing 지도 가입
- 파이어베이스 가입
- 앵귤러와 파이어베이스로 Bing 지도 애플리케이션 만들기
- 지도 컴포넌트 추가
- 관심 지점
- 맵에 핀 표시
- 지도 검색으로 관심 사항 탐색
- 화면에 Bing 맵 추가
- 지도 이벤트와 핀 설정
- 데이터베이스 보안
- 요약
- 질문
- 8장. 리액트와 마이크로서비스로 CRM 만들기
- 기술적 요구 사항
- 도커와 컨테이너 이해하기
- 도커 용어
- 마이크로서비스
- 스웨거로 REST API 설계
- 도커로 마이크로서비스 애플리케이션 만들기
- 도커로 마이크로서비스 서비스 애플리케이션 만들기 시작
- 서버 측 라우팅 지원 추가
- 도커로 서비스 실행
- 리액트 사용자 인터페이스 만들기
- 내비게이션 추가
- 요약
- 질문
- 더 읽을거리
- 9장. Vue.js와 TensorFlow.js로 만드는 이미지 인식
- 기술적 요구 사항
- 머신러닝이란 무엇이며 텐서플로는 어떻게 어울리는가?
- 머신러닝이란 무엇인가?
- 텐서플로란 무엇이며 머신러닝과 어떤 관계인가?
- 프로젝트 개요
- Vue에서 텐서플로 시작하기
- Vue 기반 애플리케이션 만들기
- Vue 템플릿으로 홈페이지 만들기
- 이미지 분류를 지원하도록 HelloWorld 컴포넌트 수정
- Vue 애플리케이션 진입점
- 자세 감지 기능 추가
- 요약
- 질문
- 더 읽을거리
- 10장. ASP.NET Core로 음악 라이브러리 만들기
- 기술적 요구 사항
- ASP.NET Core MVC 도입
- 프로젝트 개요
- ASP.NET Core, C#, 타입스크립트로 음악 라이브러리 만들기
- 비주얼 스튜디오로 ASP.NET Core 애플리케이션 생성
- 애플리케이션 구조 이해
- Discogs 모델 생성
- 컨트롤러 연결
- Index 뷰 추가
- 애플리케이션에 타입스크립트 추가
- ASP.NET에서 타입스크립트 기능 호출
- 요약
- 질문
- 더 읽을거리
- 연습 문제