책소개
MDN 추천!
아마존 자바스크립트 프로그래밍, 웹 서비스 부문 1위!
자바스크립트 초급 이상, 중급 개발자를 위한 내용을 담고 있다. 기본적인 프로그래밍 요소부터 심도 있는 프로그래밍 요소까지 다루며, 간결한 예제와 적당한 규모의 프로젝트 예제를 통해 프로그래밍 기술을 향상시킬 수 있다. 온라인으로 제공되는 웹 페이지에서 샌드박스를 통해 직접 코드를 수정해가며 원리를 학습할 수 있다.
★ 이 책에서 다루는 내용 ★
■ 문법과 제어 흐름, 자료 구조를 포함한 프로그래밍의 필수 요소 이해
■ 객체 지향과 함수형 프로그래밍을 통해 코드를 작성하고 명확하게 만드는 방법
■ 기본 웹 애플리케이션과 브라우저 스크립트를 만드는 방법
■ DOM을 사용해 브라우저와 효율적으로 상호 작용하는 방법
■ Node.js를 활용해 서버와 도구를 만드는 방법
★ 이 책의 구성 ★
이 책은 세 부분으로 구성된다. 처음 1, 2장에서는 자바스크립트 언어를 설명한다. 그 이후 일곱 개의 장에 걸쳐 웹 브라우저와 자바스크립트를 사용해 프로그래밍하는 방법을 설명한다. 마지막 두 장에서는 자바스크립트 프로그래밍을 할 수 있는 또 다른 환경인 Node.js를 다룬다.
책 전반에 걸쳐 5개의 프로젝트 장이 있으며, 실제로 프로그래밍을 경험해 볼 수 있도록 비교적 큰 예제 프로그램을 설명한다. 배달 로봇, 프로그래밍 언어, 플랫폼 게임, 픽셀 페인트 프로그램, 다이나믹 웹 사이트 순서로 진행한다.
이 책에서 언어 부분은 자바스크립트 언어의 기본 구조를 소개하는 4개의 장으로 구성된다. 소개글에서 봤던 while문과 같은 제어 구조와 사용자 고유의 빌딩 블록을 작성할 수 있는 함수 그리고 자료 구조를 소개한다. 그 다음에 기본적인 프로그램을 작성할 수 있게 된다. 다음으로 5장과 6장에서는 함수와 객체를 사용해 추상적인 코드를 작성하고 복잡성을 제어하는 방법을 소개한다.
첫 번째 프로젝트 다음에 나오는 언어 부분에서는 오류 처리와 버그 수정, 정규식(텍스트를 처리하는 중요한 도구), 모듈성(복잡성에 대한 또 다른 대응책), 비동기 프로그래밍(시간이 걸리는 이벤트 처리)에 관해 설명하는 장이 계속된다. 이어서 두 번째 프로젝트로 책의 1부를 마친다.
2부는 13장에서 19장으로 구성되며 브라우저 자바스크립트에서 접근할 수 있는 도구를 설명한다. 화면에 사물을 표시하고(14장, 17장) 사용자 입력에 응답하고(15장) 네트워크로 통신하는 방법(18장)을 배운다. 그리고 두 개의 프로젝트를 진행한다.
이후 20장에서는 Node.js를 설명하고 21장에서는 해당 도구를 사용해 소규모 웹 사이트를 만든다.
끝으로 22장에서는 속도를 개선하기 위해 자바스크립트 프로그램을 최적화할 때 고려해야 할 내용을 설명한다.
목차
1장. 값, 타입, 연산자
__값
__숫자
__문자열
__단항 연산자
__불리언 값
__빈 값
__자동 형 변환
__요약
2장. 프로그램 구조
__표현식과 구문
__바인딩
__바인딩 이름
__환경
__함수
__console.log 함수
__반환 값
__제어 흐름
__조건부 실행
__while과 do 반복문
__코드 들여쓰기
__for 반복문
__반복문 나가기
__간결한 바인딩 업데이트
__switch를 통한 값 분기
__대문자 사용
__주석
__요약
3장. 함수
__함수 정의
__바인딩과 범위
__함수 값
__선언 표기법
__화살표 함수
__호출 스택
__선택적 인수
__클로저
__재귀 함수
__함수의 발전
__함수와 부수 효과
__요약
__연습 문제
4장. 객체와 배열 자료 구조
__다람쥐 전설
__데이터 세트
__속성
__메서드
__객체
__변형
__변신 로그
__상관관계 계산
__배열 반복문
__최종 분석
__배열 더 보기
__문자열과 문자열 속성
__나머지 매개변수
__Math 객체
__구조 분해
__JSON
__요약
__연습 문제
5장. 고차 함수
__추상화
__반복 추상화
__고차 함수
__문자 데이터 세트
__배열 필터링
__맵으로 변환
__리듀스로 요약
__결합성
__문자열과 문자 코드
__텍스트 인식
__요약
__연습 문제
6장. 객체의 이중 생활
__캡슐화
__메서드
__프로토타입
__클래스
__클래스 표기법
__파생 속성 재정의
__맵
__다형성
__심볼
__반복자 인터페이스
__게터, 세터, 스태틱
__상속
__instanceof 연산자
__요약
__연습 문제
7장. 로봇 프로젝트
__메도우필드
__할 일
__영구 데이터
__시뮬레이션
__메일 트럭의 경로
__길 찾기
__연습 문제
8장. 버그와 오류
__언어
__엄격한 모드
__유형
__테스팅
__디버깅
__오류 전파
__예외 처리
__예외 처리 후 정리
__선택적 예외 처리
__어설션
__요약
__연습 문제
9장. 정규 표현식
__정규 표현식 만들기
__일치 테스트
__문자 세트
__패턴의 부분 반복
__하위 표현식 그룹화
__매칭과 그룹
__날짜 클래스
__단어와 문자열 경계 지정
__선택 패턴
__매칭의 동작 방식
__역추적
__replace 메서드
__탐욕적인 연산자
__동적 RegExp 객체 생성
__search 메서드
__lastIndex 속성
__INI 파일 파싱
__국제 문자
__요약
__연습 문제
10장. 모듈
__모듈
__패키지
__임시 모듈
__데이터를 코드로 평가하기
__CommonJS
__ECMAScript 모듈
__빌드와 번들링
__모듈 설계
__요약
__연습 문제
11장. 비동기 프로그래밍
__비동기성
__까마귀의 기술
__콜백
__프로미스
__실패
__네트워크는 어렵다
__프로미스 모음
__네트워크 플러딩
__메시지 라우팅
__비동기 함수
__제너레이터
__이벤트 루프
__비동기 버그
__요약
__연습 문제
12장. 프로그래밍 언어 프로젝트
__파싱
__실행기
__특별한 형식
__환경
__함수
__컴파일
__편법
__연습 문제
2부. 브라우저
13장. 자바스크립트와 브라우저
__네트워크와 인터넷
__웹
__HTML
__HTML과 자바스크립트
__샌드박스
__호환성과 브라우저 전쟁
14장. DOM
__문서 구조
__트리
__표준
__트리 이동하기
__요소 찾기
__문서 변경하기
__노드 생성하기
__속성
__레이아웃
__스타일링
__CSS
__쿼리 선택자
__위치 지정과 애니메이션
__요약
__연습 문제
15장. 이벤트 처리
__이벤트 핸들러
__이벤트와 DOM 노드
__이벤트 객체
__전파
__기본 동작
__키 이벤트
__포인터 이벤트
__스크롤 이벤트
__포커스 이벤트
__로드 이벤트
__이벤트와 이벤트 루프
__타이머
__디바운스
__요약
__연습 문제
16장. 플랫폼 게임 프로젝트
__게임
__기술
__레벨
__레벨 읽기
__액터
__캡슐화의 부담
__드로잉
__움직임과 충돌
__액터 업데이트
__키 추적
__게임 실행
__연습 문제
17장. 캔버스에 그리기
__SVG
__캔버스 요소
__선과표면
__경로
__곡선
__파이 차트 그리기
__텍스트
__이미지
__변환
__변환저장 및 삭제
__플랫폼 게임에 적용하기
__그래픽인터페이스 선택하기
__요약
__연습 문제
18장. HTTP와 폼
__프로토콜
__브라우저와 HTTP
__패치
__HTTP 샌드박싱
__탁월한 HTTP
__보안과 HTTPS
__폼 필드
__포커스
__필드 비활성화
__전체 폼
__텍스트 필드
__체크박스와 라디오 버튼
__셀렉트 필드
__파일 필드
__클라이언트 측에 데이터 저장
__요약
__연습 문제
19장. 픽셀 이미지 편집기 프로젝트
__구성 요소
__상태
__DOM 생성
__캔버스
__애플리케이션
__드로잉 도구
__저장과 불러오기
__작업 실행 취소
__드로잉
__왜 이렇게 어려운가?
__연습 문제
__3부 Node
__20 NODE.JS
__배경
__노드 명령어
__모듈
__NPM으로 설치
__파일 시스템 모듈
__HTTP 모듈
__스트림
__파일 서버
__요약
__연습 문제
__21 기술 공유 웹 사이트 프로젝트
__설계
__롱 폴링
__HTTP 인터페이스
__서버
__클라이언트
__연습 문제
22장. 자바스크립트와 성능
__단계적 컴파일
__그래프 레이아웃
__그래프 정의하기
__힘 지향 레이아웃
__작업 줄이기
__프로파일링
__함수 인라인
__가비지 줄이기
__가비지 콜렉션
__동적 유형
__요약
__연습 문제
연습 문제 힌트
__2장 프로그램 구조
__3장 함수
__4장 객체와 배열의 자료 구조
__5장 고차 함수
__6장 객체의 이중 생활
__7장 로봇 프로젝트
__8장 버그와 오류
__9장 정규 표현식
__10장 모듈
__11장 비동기 프로그래밍
__12장 프로그래밍 언어 프로젝트
__14장 DOM
__15장 이벤트 처리
__16장 플랫폼 게임 프로젝트
__17장 캔버스에 그리기
__18장 HTTP와 폼
__19장 픽셀 이미지 에디터 프로젝트
__20장 Node.js
__21장 기술 공유 웹 사이트 프로젝트
__22장 자바스크립트와 성능
저자소개