<NHN은 이렇게 한다! 자바스크립트 UI 개발과 Jindo 프레임워크>는 NHN의 축적된 기술 정보와 사례를 공유하는 NHN 기술 서적 시리즈인 TECH@NHN의 두 번째 시리즈이다.
이 책은 NHN에서 자체적으로 개발한 자바스크립트 프레임워크인 'Jindo 프레임워크'를 주제로 자바스크립트 UI 개발의 원리와 구현 방법을 설명한다. Jindo 프레임워크가 주제이지만 웹 개발자들이 UI 개발에 친숙해지도록 기본적인 원리에 초점을 맞춰 설명했기 때문에 Jindo 프레임워크를 사용하지 않아도 괜찮다. 예제의 원리를 이해한다면 다른 프레임워크를 사용하거나 프레임워크를 사용하지 않아도 실제 UI 개발에 응용할 수 있을 것이다.
자바스크립트 UI 개발은 다른 개발 분야와 마찬가지로 경험에 좌우되는 면이 많다. 수년간 네이버의 UI를 설계하고 개발한 저자들의 경험과 지식을 엮은 이 책으로 UI 개발에서 생길 수 있는 수많은 시행 착오를 줄일 수 있기를 바라며, 더불어 자바스크립트 UI 개발에 관심이 있다면 누구에게나 도움이 되어 더 많은 개발자들이 UI 개발에 흥미를 갖게 되기를 바란다.
이 책에서는 다음과 같은 내용을 다룬다.
o UI 개발 시 자주 접하는 사례를 통해 Jindo 프레임워크의 주요 객체와 메서드의 사용 방법 설명
o 웹 애플리케이션의 대표적 UI인 레이어, 드래그 앤드 드롭, 타이머, 애니메이션의 원리와 구현 방법 설명
o 네이버의 실시간 급상승 검색어에 사용하는 롤링 UI의 원리와 구현 방법 설명
o AJAX 및 크로스 도메인의 기본 개념과 할용 방법을 예제를 바탕으로 설명
o AJAX와 미투데이 오픈API를 이용한 웹 애플리케이션 개발 예제
o 코드 최적화, 디버깅, 정규 표현식 등 자바스크립트 개발의 효율성을 높일 수 있는 방법과 도구 소개
o NHN에서 자체적으로 만들어 지키고 있는 코딩 컨벤션 소개
이 책은 자바스크립트를 이용한 UI 개발 원리와 Jindo 프레임워크를 다루며 총 4부로 구성했다.
"1부 자바스크립트 프레임워크와 Jindo 프레임워크"에서는 AJAX의 등장 이후 변화한 웹 애플리케이션 개발 모델과 UI 개발의 정의, UI 개발에 필수 도구가 된 자바스크립트 프레임워크를 설명한다. 그리고 NHN에서 개발한 Jindo 프레임워크의 개발 배경과 기본 구조, 준비 사항을 살펴본다.
"2부 Jindo 프레임워크"에서는 Jindo 프레임워크에서 제공하는 객체와 사용법을 UI 개발 시 자주 접하는 사례와 원리를 중심으로 설명한다.
"3부 자바스크립트 UI 개발 실전 사례"에서는 네이버에서 볼 수 있는 대표적인 UI인 레이어와 드래그 앤드 드롭, 타이머, 애니메이션 UI, 롤링 UI, AJAX에서의 크로스 도메인과 히스토리 문제에 대해 원리와 구현 방법을, 예제를 토대로 설명한다. 마지막으로 미투데이 오픈 API와 AJAX를 이용한 도서 관리 웹 애플리케이션을 만들면서 이 책에서 설명한 내용을 종합적으로 살펴본다.
부록에서는 자바스크립트 개발의 효율성을 높이는 코드 최적화 방법과 디버깅 도구를 설명하고, 자바스크립트 개발 시 유용하게 활용할 수 있는 정규 표현식을 설명한다. 또한 NHN에서 자체적으로 만들어 준수하고 있는 코딩 컨벤션을 소개한다.
숭실대학교 미디어학부와 영어영문학부를 복수 전공했다. 현재 NHN 모바일 Ajax 팀에서 UI 개발과 더불어 Ajax 실무 강의를 겸하고 있다. 참여했던 대표적인 프로젝트로는 2008년 네이버 메인 개편, 2009년 네이버 지도 개편, 2010년 거리 뷰 프로젝트가 있으며, 2011년 초에는 일본으로 건너가 네이버 재팬 서비스를 지원하기도 했다. 지금은 HTML5 게임을 만들고 있으며, 자바스크립트로 할 수 있는 모든 것에 관심이 많다. 특히 타이타늄 앱 개발과 윈도우 8 앱 개발에도 관심이 많다. 공동 저작한 저서로 『자바스크립트 UI 개발과 Jindo 프레임워크』(2011년)가 있고, 번역서로는 『Node Web Development 한국어판』(2011)이 있다.
Part 01 자바스크립트 프레임워크와 Jindo 프레임워크
01_ 자바스크립트 프레임워크와 UI 개발
AJAX 기술의 등장과 UI 개발의 시작
웹 애플리케이션과 UI 개발
자바스크립트 프레임워크
02_Jindo 프레임워크
Jindo 프레임워크의 역사
Jindo의 특징
Jindo 프레임워크의 구조
Jindo 프레임워크 사용
Part 02 Jindo 프레임워크
03_요소 선택과 조작
문서 객체 모델(DOM)과 요소 선택
CSS 선택자(Selector)와 요소 선택
요소 조작
04_ 브라우저와 문서 영역 조작하기
브라우저 창과 문서 영역
브라우저와 문서 영역 조작
05_이벤트와 이벤트 처리
이벤트와 이벤트 처리
Jindo의 이벤트 핸들링과 함수 바인딩
06_데이터 다루기
데이터 타입과 래퍼 객체
Jindo의 데이터 래퍼 객체
07_폼 데이터 검증
이벤트를 활용한 폼 데이터 검증
간단한 데이터 검증
08_서버와 통신하기
XHR 객체 이해하기
XHR 객체로 통신하기
$Ajax( ) 객체 기본 사용법
$Ajax( ) 객체 실습하기
그 외의 $Ajax( ) 객체 사용법
09_클래스와 템플릿
객체지향적으로 설계하기
템플릿을 활용한 DOM 구성
10_ 그 밖의 유용한 객체
날짜 조작하기
쿠키 사용하기
브라우저 정보 확인
Part 03 자바스크립트 UI 개발 실전 사례
11_레이어 다루기
레이어 보이기와 숨기기
레이어 배치하기
영역 크기 구하기
레이어 응용하기
12_드래그 앤드 드롭
드래그 앤드 드롭 과정
기본 구현
고급 구현 및 문제 해결
HTML5의 드래그 앤드 드롭
13_타이머
기본 사용법
응용 패턴 익히기
14_애니메이션
구현방법
CSS 속성을 이용한 애니메이션
타이머를 이용한 애니메이션
15_AJAX 고급 응용
크로스 도메인 문제
AJAX 히스토리
16_실시간 급상승 검색어의 롤링
UI 요구사항
롤링 동작 구현
마우스 오버 동작 처리
재사용 가능한 클래스 객체로 만들기
17_ 도서 관리 웹 애플리케이션 만들기
웹 애플리케이션 기획
요구사항
인터페이스 만들기
애플리케이션 설계
모델 만들기
컨트롤러 만들기
이벤트 적용
기능 개선
Part 04 부록
부록 A _코드 최소화를 통한 성능 향상
최소화(Minification)의 원리
최소화 도구 - YUI Compressor
최소화 코드 복원 - 코드 포매팅
부록 B _디버깅
브라우저 개발 도구
HTTP 트래픽 정보를 활용한 디버깅
부록 C _정규 표현식
정규 표현식과 문자열
정규 표현식 선언하기
캡처링(Capturing) 사용하기
비캡처링(Non-Capturing) 활용
test( ) 메서드와 exec( ) 메서드의 성능 차이
lastIndex 속성과 g플래그 옵션
부록 D _자바스크립트 코딩 컨벤션
네이밍 규칙
코드 작성 규칙
AJAX 응답 포맷 작성 규칙
소스 코드 표기법