모던 웹을 위한 서버 사이드 자바스크립트의 모든 것
진화한 자바스크립트와 노드, 익스프레스 완벽 가이드
자바스크립트 개발 스택의 핵심인 노드와 익스프레스로 동적 웹 애플리케이션을 만들어보자. 웹사이트 개발 과정을 살펴보며 익스프레스 기본 사항을 설명한다. 서버 사이드 렌더링부터 단일 페이지 애플리케이션(SPA) 사용에 적합한 API 개발까지 웹 개발의 모든 것을 다룬다. 자바스크립트에 익숙한 프런트엔드와 백엔드 엔지니어를 위해 다중 페이지와 하이브리드 웹 앱을 익스프레스로 구현하는 모범 사례도 함께 제공한다.
2판에서 달라진 점
익스프레스와 함께 사용하는 미들웨어를 비롯한 각종 도구들은 엄청나게 변화했습니다. 자바스크립트 자체도 진화했고, 웹 애플리케이션을 설계하는 방법 역시 순수한 서버 사이드 렌더링에서 단일 페이지 애플리케이션(SPA)으로 격변했습니다. 초판에 수록한 원칙 대부분은 아직 유효하고 유용하지만, 실질적인 기법과 권할 만한 도구들은 완전히 달라졌습니다. 이런 변화의 흐름에 따라 2판에서는 API와 정적 자원의 서버로 익스프레스를 사용하는 법을 설명하고, SPA 예제도 수록해 진화한 노드와 익스프레스를 체험할 수 있도록 개정했습니다. 또한 예제를 수월하게 따라 할 수 있도록 한국 독자를 위한 부록도 추가했습니다.
주요 내용
추천사
노드와 익스프레스 생태계를 훌륭히 소개할 뿐 아니라 지속성, 미들웨어, 깃과 같은 웹 개발 개념을 자세하고 친절하게 설명합니다.
_알레한드라 올베라-노바크, AWS Developer Relations
간결한 개념 설명과 실습으로 쉽고 빠르게 노드와 익스프레스를 익혔고, 토이 프로젝트에 바로 적용할 수 있었습니다. 관심은 있지만 어디서부터 시작해야 할지, 어떻게 해야 할지 고민하는 분에게 적극 추천합니다!
_김서현, 이화여자대학교 사이버보안전공 학부생
노드와 익스프레스 개념을 예제 프로젝트와 함께 배울 수 있고, 웹사이트를 만드는 데 필요한 과정을 A to Z 방식으로 자세히 설명해주어 유용합니다. 이 책을 읽으면서 자신만의 웹서비스를 구축하는 여행을 떠나보세요.
_김수영, 아이엠파인 프로
노드와 익스프레스로 메도라크 여행사 웹사이트를 만드는 과정을 한 권에 모두 담았습니다. 환경 구축부터 개념 설명, 프로젝트를 개발하는 방법, 배포와 유지 보수, 보안 등 웹 개발 기초 과정부터 유지 관리까지 다루며 개발 방향을 훌륭하게 제시합니다. 웹 개발을 처음 시작할 때 막막함을 풀어주는 좋은 책입니다.
_이석곤, 엔컴 프로젝트 팀 차장
CHAPTER 1 익스프레스 소개
1.1 자바스크립트의 혁명
1.2 익스프레스 소개
1.3 서버 사이드 애플리케이션과 클라이언트 사이드 애플리케이션
1.4 익스프레스의 간단한 역사
1.5 노드: 새로운 웹 서버
1.6 노드 생태계
1.7 라이선스
1.8 마치며
CHAPTER 2 노드 시작하기
2.1 노드 설치
2.2 터미널 사용하기
2.3 에디터
2.4 npm
2.5 노드로 만드는 단순한 웹 서버
2.6 익스프레스로 출발
CHAPTER 3 익스프레스로 시간 절약
3.1 스캐폴딩
3.2 메도라크 여행사 웹사이트
3.3 초기 단계
3.4 마치며
CHAPTER 4 모범 사례와 버전 관리
4.1 파일과 디렉터리 구조
4.2 모범 사례
4.3 버전 관리
4.4 책에서 깃을 사용하는 방법
4.5 npm 패키지
4.6 프로젝트 메타데이터
4.7 노드 모듈
4.8 마치며
CHAPTER 5 품질보증
5.1 QA 계획
5.2 QA에 가치가 있을까?
5.3 로직과 표현
5.4 테스트 타입
5.5 QA 테크닉 개요
5.6 제스트 설치와 설정
5.7 단위 테스트
5.8 통합 테스트
5.9 린트
5.10 지속적 통합
5.11 마치며
CHAPTER 6 요청과 응답 객체
6.1 URL의 각 부분
6.2 HTTP 요청 메서드
6.3 요청 헤더
6.4 응답 헤더
6.5 인터넷 미디어 타입
6.6 요청 바디
6.7 요청 객체
6.8 응답 객체
6.9 더 많은 정보
6.10 간단한 예제
6.11 마치며
CHAPTER 7 핸들바를 이용한 템플릿
7.1 절대 규칙은 이것 하나뿐
7.2 템플릿 엔진 선택
7.3 퍼그: 독특한 접근법
7.4 핸들바 기초
7.5 마치며
CHAPTER 8 폼 처리
8.1 클라이언트 데이터를 서버에 전송하기
8.2 HTML 폼
8.3 인코딩
8.4 폼을 처리하는 다른 방법
8.5 익스프레스를 이용한 폼 처리
8.6 fetch API를 이용한 폼 데이터 전송
8.7 파일 업로드
8.8 파일 업로드 UI 개선
8.9 마치며
CHAPTER 9 쿠키와 세션
9.1 자격 증명 위임
9.2 익스프레스와 쿠키
9.3 쿠키 실험
9.4 세션
9.5 세션을 통한 플래시 메시지 구현
9.6 세션 활용법
9.7 마치며
CHAPTER 10 미들웨어
10.1 미들웨어 원칙
10.2 미들웨어 예제
10.3 널리 쓰이는 미들웨어
10.4 서드파티 미들웨어
10.5 마치며
CHAPTER 11 이메일 전송
11.1 SMTP, MSA, MTA
11.2 이메일 수신
11.3 이메일 헤더
11.4 이메일 형식
11.5 HTML 이메일
11.6 노드메일러
11.7 대량으로 전송할 때 생각해볼 것
11.8 HTML 이메일 전송
11.9 마치며
CHAPTER 12 실무 환경
12.1 실행 환경
12.2 환경별 설정
12.3 노드 프로세스 실행
12.4 웹사이트 확장
12.5 웹사이트 모니터링
12.6 스트레스 테스트
12.7 마치며
CHAPTER 13 지속성
13.1 파일시스템 지속성
13.2 클라우드 지속성
13.3 데이터베이스 지속성
13.4 세션 스토리지를 위한 데이터베이스
13.5 마치며
CHAPTER 14 라우팅
14.1 라우트와 SEO
14.2 서브도메인
14.3 라우트 핸들러는 미들웨어입니다
14.4 라우트 경로와 정규 표현식
14.5 라우트 매개변수
14.6 라우트 구성
14.7 모듈에서 라우트 선언
14.8 핸들러의 논리적 그룹
14.9 뷰 자동 렌더링
14.10 마치며
CHAPTER 15 REST API와 JSON
15.1 JSON과 XML
15.2 API
15.3 API 오류 보고
15.4 교차 출처 리소스 공유(CORS)
15.5 테스트
15.6 익스프레스를 통한 API 제공
15.7 마치며
CHAPTER 16 단일 페이지 애플리케이션
16.1 웹 애플리케이션 개발의 짧은 역사
16.2 SPA 프레임워크
16.3 리액트 앱 만들기
16.4 리액트 기본
16.5 마치며
CHAPTER 17 정적 콘텐츠
17.1 성능 고려 사항
17.2 콘텐츠 전송 네트워크
17.3 CDN을 고려한 설계
17.4 정적 자원 캐싱
17.5 정적 콘텐츠 수정
17.6 마치며
CHAPTER 18 보안
18.1 HTTPS
18.2 CSRF
18.3 인증
18.4 마치며
CHAPTER 19 서드파티 API와 통합
19.1 소셜 미디어
19.2 지오코딩
19.3 날씨 데이터
19.4 마치며
CHAPTER 20 디버깅
20.1 디버깅의 첫 번째 원칙
20.2 REPL과 콘솔 활용
20.3 노드의 내장 디버거
20.4 노드 인스펙터 클라이언트
20.5 비동기 함수 디버깅
20.6 익스프레스 디버깅
20.7 마치며
CHAPTER 21 사이트 오픈
21.1 도메인 등록과 호스팅
21.2 마치며
CHAPTER 22 유지 보수
22.1 유지 보수의 원칙
22.2 코드 재사용과 리팩터링
22.3 마치며
CHAPTER 23 추가 자료
23.1 온라인 문서
23.2 정기 간행물
23.3 스택 오버플로
23.4 익스프레스에 기여하기
23.5 마치며
APPENDIX A 폼 처리
A.1 익스프레스를 이용한 폼 처리
A.2 파일 업로드
APPENDIX B 쿠키와 세션
B.1 세션을 통한 플래시 메시지 구현
APPENDIX C 미들웨어
C.1 미들웨어 연결하기
APPENDIX D 이메일 전송
D.1 노드메일러
D.2 HTML 이메일 전송
APPENDIX E 지속성
E.1 데이터베이스 레이어 추상화
E.2 몽구스로 데이터베이스에 연결
E.3 초기 데이터 저장
E.4 데이터 가져오기
E.5 데이터 추가
E.6 PostgreSQL에 데이터 추가하기
E.7 세션 스토리지를 위한 데이터베이스
APPENDIX F 라우팅
F.1 서브도메인
F.2 라우트 핸들러는 미들웨어입니다
F.3 라우트 매개변수
F.4 모듈에서 라우트 선언
APPENDIX G REST API와 JSON
G.1 익스프레스를 통한 API 제공
APPENDIX H 단일 페이지 애플리케이션
H.1 리액트 앱 만들기
H.2 리액트 기본
APPENDIX I 서드파티 AP와 통합
I.1 데이터 지오코딩하기
I.2 날씨 데이터
노드와 익스프레스로 구현하는 가장 모던한 웹 애플리케이션
모던한 웹 애플리케이션을 만들기 위해선 노드와 익스프레스를 빼고 이야기할 수 없습니다. 두 핵심 기술의 다양하고 유용한 도구를 활용하면 기존보다 훨씬 더 좋은 코드와 구성을 갖춘 애플리케이션을 구축할 수 있습니다.
이 책은 노드와 익스프레스로 예제를 직접 구현해보면서 웹사이트를 만드는 가장 좋은 방법을 알아봅니다. 웹사이트 구현에 필요한 템플릿인 핸들바와 미들웨어, 인증과 권한 부여, 서드파티 연결부터 유지 보수 계획을 수립하는 법까지 웹 개발 타임라인에 필요한 순으로 개념을 익힐 수 있도록 구성했습니다. 예제를 따라 하다보면 어느샌가 본인만의 웹사이트를 구현할 수 있는 수준까지 실력이 업그레이드되어 있을 겁니다.
▶ 노드 14, 익스프레스 4 대응!
▶ 사전 지식
- 자바스크립트 초중급
- 노드 & 익스프레스 초급
- 데이터베이스 초급
▶ 먼저 보면 좋은 책
- 『혼자 공부하는 자바스크립트』
- 『모던 웹을 위한 Node.js 프로그래밍 3판』
- 『몽고DB 완벽 가이드(3판)』
- 『학교에서 알려주지 않는 17가지 실무 개발 기술』