옮긴이의 글 ... 4 추천글 ... 6 서문 ... 8 1장 핵심 원칙 1.1 복잡성 관리 ... 24 1.2 모듈화된 컴포넌트 ... 25 모듈화 달성 ... 26 모듈화의 장점 ... 27 1.3 대규모 웹 애플리케이션을 위한 열 가지 원칙 ... 27 2장 객체지향 2.1 OOP 기초 ... 32 2.2 왜 객체지향을 선택하는가? ... 33 2.3 UML 클래스 다이어그램 ... 34 일반화 ... 34 연관성 ... 35 2.4 웹 페이지 모델링 ... 36 Page 형식 정의하기 ... 36 Module 형식 정의하기 ... 37 2.5 코드 구현하기 ... 37 2.6 모듈화 달성 ... 39 2.7 객체지향 PHP ... 41 클래스와 인터페이스 ... 41 PHP에서의 상속 ... 46 2.8 객체지향 자바스크립트 ... 50 오브젝트 ... 50 자바스크립트에서의 상속 ... 54 3장 대규모 HTML 3.1 모듈화된 HTML ... 8 나쁜 예: 테이블과 프레젠테이션 마크업 사용 ... 59 조금 나은 예: CSS 사용 ... 61 가장 좋은 예: 자체적으로 의미를 지닌 HTML ... 62 좋은 HTML의 장점 ... 67 3.2 HTML 태그 ... 70 나쁜 HTML 태그 ... 70 좋은 HTML 태그 ... 71 ID, Class, Name ... 73 네이밍 규칙 ... 74 3.3 XHTML ... 74 XHTML의 이점 ... 75 XHTML 가이드라인 ... 75 3.4 RDFa ... 79 RDFa 트리플 ... 80 RDFa 적용하기 ... 81 3.5 HTML 5 ... 85 4장 대규모 CSS 4.1 모듈화된 CSS ... 88 CSS 추가하기 ... 88 CSS 적용하기 ... 91 특수성과 중요성 ... 95 CSS 스코핑 ... 96 표준 모듈 포맷 ... 102 4.2 위치 조절 기법 ... 106 CSS 박스 모델 ... 106 문서 흐름 ... 108 상대 위치 지정 ... 109 절대 위치 지정 ... 109 플로팅 ... 112 4.3 레이아웃과 컨테이너 ... 113 레이아웃 예제 ... 114 예제 컨테이너 ... 123 4.4 다른 기법 ... 126 브라우저 재설정 CSS ... 126 폰트 정규화 ... 129 5장 대규모 자바스크립트 5.1 모듈화 자바스크립트 ... 132 자바스크립트 추가하기 ... 132 자바스크립트 스코핑 ... 134 5.2 DOM 활용하기 ... 137 공통 DOM 메소드 ... 138 인기 있는 DOM 라이브러리 ... 139 5.3 이벤트 관련 작업 ... 145 이벤트 처리 정규화 ... 145 나쁜 예제: 이벤트 핸들러의 전역 데이터 ... 146 좋은 예제: 이벤트 핸들러의 오브젝트 데이터 ... 147 5.4 애니메이션 작업 ... 150 모션 애니메이션 ... 150 크기 조절 애니메이션 ... 151 색상 변경 ... 152 5.5 예제: 체인 셀렉션 리스트 ... 154 6장 데이터 관리 6.1 동적 모듈 ... 166 6.2 데이터 관리자 ... 168 데이터 관리자 생성 ... 171 데이터 관리자 확장 ... 173 6.3 SQL을 소스로 사용하는 데이터 ... 176 SQL 예제 ... 176 6.4 XML을 소스로 사용하는 데이터 ... 180 XML 예제 ... 180 6.5 웹 서비스를 이용해 데이터 가져오기 ... 185 6.6 JSON 형식의 데이터 ... 186 6.7 쿠키와 폼 ... 188 쿠키로 데이터 관리하기 ... 188 폼에서의 데이터 관리 ... 189 7장 대규모 PHP 7.1 모듈화 웹 페이지 ... 192 페이지를 PHP로 생성하기 ... 193 7.2 페이지 관련 작업 ... 198 Page 클래스의 public 인터페이스 ... 199 Page 클래스의 추상 인터페이스 ... 202 Page 클래스 구현 ... 206 페이지 클래스 확장 ... 218 7.3 모듈 관련 작업 ... 225 Module 클래스의 public 인터페이스 ... 226 Module 클래스의 추상 인터페이스 ... 226 Module 클래스 구현 ... 228 Module 클래스 확장 ... 229 모듈 예제: slideshow ... 229 7.4 레이아웃과 컨테이너 ... 244 7.5 특수 고려사항 ... 247 모듈 변형 처리 ... 248 여러 개의 모듈 인스턴스 ... 249 동적 자바스크립트와 CSS ... 250 중첩 모듈 구현 ... 251 8장 대규모 Ajax 8.1 브라우저와 Ajax ... 254 커넥션 관리 ... 254 Ajax 라이브러리 활용 ... 258 8.2 서버 작업 ... 264 형식 교환 ... 265 서버 프록시 ... 268 모듈화 Ajax ... 269 8.3 MVC와 Ajax ... 272 MVC로 Ajax 사용하기 ... 273 Model 오브젝트의 public 인터페이스 ... 280 Model 오브젝트의 구현 ... 281 View 오브젝트의 public 인터페이스 ... 284 View 오브젝트의 추상 인터페이스 ... 285 View 오브젝트 구현 ... 285 Connect 오브젝트의 public 인터페이스 ... 286 Connect 오브젝트의 추상 인터페이스 ... 287 Connect 오브젝트 구현 ... 287 컨트롤러 ... 291 MVC를 이용한 Ajax 예제: Accordion Lists ... 291 9장 성능 9.1 캐시와 성능 ... 300 CSS와 잡스크립트 캐시 ... 300 모듈 캐시 ... 307 페이지 캐시 ... 312 Ajax 캐시 ... 312 헤더 만료 이용하기 ... 315 9.2 자바스크립트 관리 ... 316 자바스크립트 위치 ... 316 자바스크립트 최소화 ... 317 중복 제거 ... 318 9.3 자산 분산시키기 ... 320 콘텐츠 분산 전송 네트워크 ... 320 DNS 검색 최소화 ... 320 HTTP 요청 최소화 ... 321 9.4 사이트 통계 이용 ... 325 9.5 모듈화 테스트 ... 328 테스트 데이터 활용 ... 328 테스트 데이터 생성 ... 330 10장 애플리케이션 구조 10.1 모듈화 구상 ... 334 10.2 컴포넌트 구성 ... 334 사이트 범위 구조 ... 335 섹션 구조 ... 341 페이지 구조 ... 342 10.3 구조와 유지보수 ... 345 모듈 활용 재구성 ... 345 모듈 변형 추가 ... 348 광범위한 변경 ... 351 데이터 소스 변경 ... 354 모듈을 외부로 노출하기 ... 358 INDEX ... 359