책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 웹 서비스/웹 프로그래밍
· ISBN : 9791193926970
· 쪽수 : 388쪽
· 출판일 : 2025-02-07
책 소개
목차
옮긴이 머리말 x
베타리더 후기 xii
머리말 xiv
CHAPTER 1 시작하며 1
CHAPTER 2 소프트웨어 복잡성 관리하기 6
2.1 복잡성 설명하기 8
2.2 복잡성의 근본 원인 파악하기 9
2.3 소프트웨어 설계 철학 11
2.4 타르 웅덩이 밖으로 12
2.5 단순함이 쉬움을 만든다 13
2.6 은탄환은 없다 14
2.7 시스템 디자인과 아키텍처 복잡성의 비용 15
2.8 팀은 어떻게 복잡성을 관리할 수 있는가? 17
2.9 최고의 해결책은 단순하지만 간단하지 않다 18
2.10 때때로 (필수적인) 복잡성은 다른 어딘가에는 살아남아야 한다 19
2.11 복잡성을 관리하는 데 지속되는 어려움은 무엇인가? 20
2.12 결론 21
2.13 더 읽을 거리 21
CHAPTER 3 모듈성 23
3.1 자바스크립트에서의 모듈 24
3.2 지연 로딩 32
3.3 코드 분할 37
3.4 정리 41
CHAPTER 4 성능 42
4.1 브라우저는 어떻게 작동하는가? 43
4.2 자바스크립트에서의 비용 이해하기와 줄이기 47
4.3 상호작용 최적화 50
4.4 네트워킹 50
4.5 서드파티 의존성의 영향 줄이기 51
4.6 렌더링 패턴 54
4.7 인지된 성능 최적화하기 55
4.8 성능 최적화 자료 58
4.9 성능 문화 61
CHAPTER 5 디자인 시스템 63
5.1 코딩 스타일 가이드 64
5.2 디자인 토큰 66
5.3 컴포넌트 라이브러리 71
5.4 접근성 74
5.5 성능 76
5.6 문서화 77
5.7 케이스 스터디 78
5.8 정리 82
CHAPTER 6 데이터 가져오기 83
6.1 브라우저 API와 간단한 HTTP 클라이언트 83
6.2 보다 세련된 데이터 가져오기 라이브러리 85
6.3 캐시 업데이트하기 92
6.4 효율적인 데이터 가져오기를 위한 팁 100
CHAPTER 7 상태 관리 106
7.1 컴포넌트 간 데이터 관리하기 107
7.2 prop 내려보내기 110
7.3 단순한 상태 관리 113
7.4 상태 관리 전용 라이브러리 115
7.5 마지막 고려 사항 120
CHAPTER 8 국제화 122
8.1 코드에서 텍스트와 콘텐츠를 분리하라 123
8.2 서드파티 지역화 라이브러리를 활용하라 125
8.3 동적 로딩 130
8.4 여러 언어에서의 복수형 처리하기 132
8.5 날짜, 시간, 숫자 형식 나타내기 134
8.6 오른쪽에서 왼쪽으로 쓰는 언어를 고려하라 138
8.7 정리 145
CHAPTER 9 코드 조직화하기 146
9.1 폴더와 파일 구조 147
9.2 명명 규칙 150
9.3 배럴 익스포트 151
9.4 그 밖의 다른 좋은 프랙티스들 152
9.5 정리 157
CHAPTER 10 개인화와 A/B 테스팅 158
10.1 개인화 159
10.2 A/B 테스팅 161
10.3 기능 플래그 168
10.4 정리 172
CHAPTER 11 확장 가능한 웹 아키텍처 173
11.1 확장성 173
11.2 확장 가능한 애플리케이션의 특성 178
11.3 쿠버네티스와 도커는 어디에 적합한가? 179
11.4 Vercel과 Netlify 같은 기술은 어디에 적합한가? 182
11.5 정리 184
CHAPTER 12 테스팅 185
12.1 단위 테스트 186
12.2 엔드-투-엔드 테스트 191
12.3 통합 테스트 200
12.4 스냅숏 테스트 203
12.5 애플리케이션을 어떻게 테스트해야 하는가? 207
CHAPTER 13 툴링 212
13.1 버전 관리: 깃 212
13.2 지속적 통합 215
13.3 번들러 216
13.4 린팅 218
13.5 로깅과 성능 모니터링 219
13.6 정리 221
CHAPTER 14 기술적 마이그레이션 222
14.1 다양한 마이그레이션 전략 223
14.2 마이그레이션 전략 225
14.3 코드모드 226
14.4 생성형 AI의 역할 231
CHAPTER 15 타입스크립트 235
15.1 타입 안전성 235
15.2 빌드 도구와 타입스크립트 238
15.3 구성과 린팅 238
15.4 리액트 + 타입스크립트 242
15.5 선언 파일들 261
15.6 API 결과에 타입 자동 생성 263
15.7 기존 리액트 애플리케이션을 타입스크립트로 마이그레이션하기 270
CHAPTER 16 라우팅 274
16.1 사용자에게 라우팅이 중요한 이유는 무엇인가? 274
16.2 리액트의 라우팅 설루션 279
16.3 정리 290
CHAPTER 17 사용자 중심 API 디자인 292
17.1 일관성 294
17.2 에러 핸들링 300
17.3 문서화 303
17.4 버저닝 305
17.5 보안 309
17.6 이해관계자 참여 315
17.7 최종 고려 사항 316
17.8 더 읽을 거리 317
CHAPTER 18 리액트의 미래 318
18.1 무엇이 달라지는가? 319
18.2 새로운 훅과 API 319
18.3 리액트 컴파일러 333
18.4 리액트 서버 컴포넌트 343
18.5 더 읽을 거리 357
CHAPTER 19 맺음말 358
찾아보기 364
리뷰
책속에서
대규모 웹/자바스크립트 애플리케이션 구축과 유지보수의 개념은 매우 방대하다. 아키텍처 설계부터 성능 최적화에 이르기까지 다양한 주제들을 다룰 수 있으며, 주제의 범위를 모두 다루려면 다양한 책들이 필요할 것이다. (…) 주로 리액트에 초점을 두긴 하겠지만, 앞에서 언급한 이 책에서 다루는 대부분의 주제는 거의 모든 자바스크립트 프레임워크 또는 라이브러리에 적용할 수 있는 것이다. (…) 어떠한 단일 도구 혹은 라이브러리도 문제에 관한 보편적 해결책이 아니기 때문이다. 우리는 통찰력과 방법론을 제공하며, 여러분은 이를 활용해 각자의 구체적인 니즈와 콘텍스트에 가장 적합한 도구 혹은 라이브러리가 무엇인지 평가하고 선택할 수 있을 것이다.
리액트는 본질적으로 개발자들로 하여금 컴포넌트(component)를 사용해 생각할 것을 권장한다. 각 컴포넌트는 UI의 구분된 조각이며, 올바르게 구축한다면 애플리케이션의 다양한 부분에서 재사용할 수 있다. (…) 리액트 애플리케이션의 규모가 늘어나면서 컴포넌트들을 확장 가능하고 유지보수 가능한 형태로 조직화할 필요성이 생겨난다. 그렇다면 컴포넌트 라이브러리, 어토믹 설계(atomic design), 또는 도메인 주도 설계(domain-driven design, DDD) 같은 개념을 사용할 때이다. 이들 중 몇 가지 개념에 대해서는 책 후반부에서 다룰 것이다.
자바스크립트는 상호작용할 수 있는 사용자 경험과 동적 콘텐츠를 사용 가능하게 함으로써 모던 웹 개발의 핵심 요소가 되었다. 하지만 자바스크립트를 사용하는 비용은 성능, 구체적으로는 다운로드 시간과 CPU 실행 시간과 관련해 부정적인 영향을 미칠 수 있다. 이는 페이지 로딩 시간을 늦추고, 상호작용성을 줄이고, 형편없는 사용자 경험(특히 느린 CPU가 탑재된 랩톱과 모바일 기기를 사용하는 사용자들이 해당함)을 만든다. / 자바스크립트 CPU 실행 최적화를 통해 총 차단 시간(total blocking time, TBT) 및 다음 페인트와의 상호작용(interaction to next paint, INP) 같은 상호작용성 지표를 개선할 수 있다.