Top

Node.js, MongoDB와 AngularJS를 이용한 웹 개발 [MEAN 스택을 이용한 강력한 인터랙티브 웹 앱 프로그래밍]

  • 원서명Node.js, MongoDB, and AngularJS Web Development (ISBN 9780321995780)
  • 지은이브래드 데일리(Brad Dayley)
  • 옮긴이테크 트랜스 그룹 T4
  • ISBN : 9788960776616
  • 45,000원
  • 2014년 12월 30일 펴냄 (절판)
  • 페이퍼백 | 732쪽 | 188*250mm
  • 시리즈 : 웹 프로페셔널

판매처

  • 현재 이 도서는 구매할 수 없습니다.

책 소개

이 책에서 사용된 예제 파일은 저자의 깃허브에서 받아보실 수 있습니다.
https://github.com/bwdbooks/nodejs-mongodb-AngularJS-web-development

요약

이 책은 Node.js, 몽고DB(MongoDB), 앵귤러JS(AngularJS)를 이용하여 강력한 인터랙티브 웹사이트와 웹 애플리케이션을 개발하고자 하는 이들을 위한 책이다. 이 책에서는 MEAN 스택의 구성 요소(서버 측 구현을 위한 Node.js와 클라이언트 측의 앵귤러JS, 그리고 데이터베이스의 몽고DB) 소개와 같은 기초적인 내용부터 시작해서 애플리케이션 요구에 부합하는 데이터 모델 설계 방법을 다룬다. 몽고DB의 Node.js 애플리케이션과의 통합 또는 앵귤러JS와 Node.js 통합, 앵귤러JS 지시어와 서비스 생성, Node.js의 익스프레스(Express) 모듈 사용 방법 등의 내용들을 다룬다. 추가적으로 실제 웹 애플리케이션 개발 예제를 다룸으로써 독자들의 이해를 돕고자 많은 노력을 하였다.

이 책에서 다루는 내용

■ Node.js와 익스프레스(Express)를 이용해서 규모 조절성(scalability)이 뛰어나고 역동적인 웹 서버를 구현하는 방법
■ 자바스크립트로 서버 측 웹 서비스를 구축하는 방법
■ 몽고DB를 사용해 웹 애플리케이션 데이터를 저장하는 방법
■ Node.js 자바스크립트 코드에서 몽고DB에 접근하고 상호작용을 하는 방법
■ 정적 웹 루트(route)와 동적 웹 루트를 선언하는 방법과 이를 지원하기 위한 서버 측 스크립트를 구현하는 방법
■ 사용자 정의 앵귤러JS 지시자를 선언해 HTML 언어를 확장하는 방법
■ Node.js 웹 서버와 상호 작용할 수 있는 클라이언트 측 서비스를 구현하는 방법
■ 풍부한 UI를 제공하는 동적 브라우저 뷰를 구축하는 방법
■ 인증된 사용자 계정을 웹 사이트나 웹 애플리케이션에 추가하는 방법
■ 웹 페이지에 중첩된 코멘트 컴포넌트를 추가하는 방법
■ 물건을 사기 시작할 때부터 구매가 끝날 때까지 내내 쓰이는 장바구니를 구현하는 방법

이 책의 대상 독자

이 책은 HTML을 기본적으로 이해하고 있으며, 현대 프로그래밍 언어로 프로그램을 짜본 경험이 있는 사람들을 대상으로 한다. 자바스크립트을 이미 아는 사람이라면 좀 더 쉽게 소화할 수 있겠지만, 이 책에서 이미 자바스크립트의 기초를 다루므로 반드시 알고 시작할 필요는 없다.

이 책의 구성

I부, ‘개요’에서는 Node.js, 몽고DB, 그리고 앵귤러JS의 상호작용 개념과 이 세 개가 완벽한 웹 개발 스택을 형성한 방식을 알아본다. 2장은 Node.js와 앵귤러JS 코드를 구현할 때 필요한 자바스크립트 언어의 기본 내용을 제공하는 자바스크립트 기초 안내서 역할을 한다.

II부, ‘Node.js 학습’에서는 Node.js 모듈을 설치하고 구현해 보는 방식으로 Node.js 언어 플랫폼을 다룬다. 이 부분에서는 사용자 정의 Node.js 모듈뿐만 아니라 웹 서버와 서버 측 스크립트를 구현하는 데 필요한 기본 프레임워크를 제공한다.

III부, ‘몽고DB 학습’에서는 몽고DB 데이터베이스를 설치하는 방법과 Node.js 애플리케이션과 통합하는 방법을 다룬다. 애플리케이션 요구에 부합되는 데이터 모델을 설계하는 방법과 Node.js 애플리케이션의 몽고DB에 접근하고 상호작용하는 방법도 설명한다.

IV부, ‘익스프레스 모듈 사용’에서는 Node.js의 익스프레스 모듈을 애플리케이션의 웹 서버로 사용하는 방법을 설명한다. 데이터 수집용 동적 루트와 정적 루트를 설정하는 방법뿐만 아니라 보안, 캐시 처리, 그리고 그 밖의 웹 서버 기초 사항들을 구현하는 방법을 학습하게 된다.

V부, ‘앵귤러JS 학습’에서는 앵귤러JS 프레임워크 아키텍처와 앵귤러JS를 Node.js 스택에 통합하는 방법을 다룬다. 이 파트는 사용자 정의 HTML 지시어와 브라우저에서 사용할 수 있는 클라이언트 측 서비스 생성을 다룬다.

VI부, ‘웹 애플리케이션 컴포넌트 개발 실무’에서는 웹 애플리케이션의 인증된 사용자 계정, 코멘트 부분, 그리고 장바구니를 제공하기 위해 Nodejs, 몽고DB, 앵귤러JS를 사용한 실용 예제 몇 개를 다뤄본다. 또한 웹 애플리케이션에서 웹 2.0 인터랙션을 구현하기 위한 몇 가지 방법도 다룬다.

저자/역자 소개

저자 서문

이 책을 펴든 모든 분을 환영한다. 이 책은 여러분을 웹 개발 프로젝트의 서버와 서비스뿐만 아니라 브라우저에서 작동하는 클라이언트에 이르기까지, 자바스크립트를 사용하는 세상으로 데리고 갈 것이다. 웹 개발 세상에서 최근 부각되고 있는 가장 흥미진진하고 혁신적인 기술들 중 일부인 Node.js, 몽고DB(MongoDB), 그리고 앵귤러JS(AngularJS)를 통합한 구현 방식을 다룬다.

이 책은 웹 서버와 웹 서버에 대한 서비스부터 브라우저 기반의 상호작용 가능한 웹 애플리케이션에 이르기까지, 강력하고 상호 작용 가능한 웹사이트와 웹 애플리케이션을 개발하는 방법을 가르쳐줄 것이다. 여기서 다루는 기술들은 모두 오픈 소스를 바탕으로 삼고 있으며, 자바스크립트를 서버와 브라우저 양쪽 구성 요소를 위해 사용할 수 있게 한다.

이 책의 일반적인 독자들은, 쉽게 규모를 조절할 수 있고 성능도 좋은, 웹사이트를 구축하기 위해 Node.js와 몽고DB를 완전히 익히고자 할 것이다. 또한 앵귤러JS의 혁신적인 MVC 패턴을 이용해서 잘 설계되고 구조화된 웹 페이지와 웹 애플리케이션을 구현하고자 할 것이다. 전반적으로 Node.js, 몽고DB, 앵귤러JS는 쉽게 구현할 수 있고, 놀라운 웹 2.0 애플리케이션을 구현 가능하게 하는 완전히 통합된 웹 개발 스택을 제공한다.

저자 소개

브래드 데일리 (Brad Dayley)

20년 이상 엔터프라이즈 애플리케이션과 웹 인터페이스를 개발해 온 중견 소프트웨어 엔지니어다. 수년간 자바스크립트와 제이쿼리를 사용하고 있고, 『Sams jQuery and JavaScript Phrasebook』과 『Sams Teach Yourself jQuery and JavaScript in 24 Hours』를 저술했으며, 애플리케이션 서버부터 복잡한 웹 2.0 인터페이스에 이르기까지 다수의 애플리케이션과 서비스를 디자인하고 구현했다. 또한 『Python Developer’s Phrasebook』과 『Sams Teach Yourself Django in 24 Hours』의 저자기도 하다.

옮긴이의 말

스위스 제네바 소재 유럽입자물리연구소에 근무하던 팀 버너스리(Tim Berners-Lee)가 1989년부터 개발하기 시작한 월드와이드웹(World Wide Web)은 다양한 형태로 된 데이터와 정보에 어디에서든지 접근할 수 있게 해준 서비스로, 현재까지 지속해서 진화하며 발전하고 있다. 월드와이드웹은 고에너지 물리(High Energy Physics) 학계의 정보 교환 프로젝트 모델이었지만, 지금은 다양한 데이터를 누구든지 공유하고 주고받을 수 있는 정보 제공 매개체 겸 소비매개체로서 중요한 역할을 담당하고 있다.

월드와이드웹을 바탕으로 삼아 다양한 서비스를 제공하는 일에는 웹 애플리케이션 개발이 매우 중요하다. 웹 애플리케이션 구축 시 서버 프로그램은 자바로 구현하고, 클라이언트 프로그램은 HTML과 자바스크립트와 CSS 등을 이용해 구현하면서, MySQL과 같은 관계형 데이터베이스를 사용하는 것이 일반적인 방법이다. 이와 같은 조합이 분명히 강력한 해법이기는 하지만, 간단한 웹을 구현하더라도 SQL과 자바와 자바스크립트와 CSS 등을 모두 사용할 줄 알아야 한다는 단점이 있다.

또한, 같은 데이터를 담은 객체들의 형식이 서로 달라서 객체 간에 변환 작업을 반드시 수행해야 하다 보니 오버헤드가 발생하고 이로 인해 성능도 낮아질 수밖에 없다. 이를 해결하기 위해 등장한 솔루션 중 하나가 바로 MEAN(MongoDB, Express, AngularJS, Node.js)이라는 스택이다. 이 조합을 해법으로 삼은 경우에는 같은 언어(JavaScript)와 같은 데이터 객체(JSON)를 사용하게 되므로 웹 애플리케이션 개발 시 진입 장벽이 낮아진다. 이 책은 이러한 MEAN 스택을 좀 더 쉽게 이해할 수 있게 하는 한편으로 이 조합을 이용해 실제 웹 애플리케이션을 구축할 수 있게 한다.

이 책에는 웹 프로그래밍을 위한 핵심 요소 기술들이 잘 설명되어 있고 예제도 많이 수록되어 있다. 이 책으로 독자들은 많은 활용 사례를 확보할 수 있을 것으로 예상된다. 이와 같은 각 사례를 바탕으로 삼아 자신만의 것으로 확장하는 방법을 고민해 보아야 할 것이다.

옮긴이 소개

테크 트랜스 그룹 T4

최신 정보 기술(IT, information technology)을 연구하고 개발하고 교육하는 모임이다. 엔터프라이즈 환경에서 오픈 소스를 활용한 프레임워크를 구축하는 일에 관심이 많으며, 최근에는 모바일을 접목한 하이브리드 환경에서 사용자 인터페이스와 사용자 경험UI/UX, HTML5, 스프링(Spring), NoSQL, Node.js, 앵귤러JS(AngularJS) 등, 아키텍처 전반에 걸친 웹 기술과 빅 데이터 기술을 적용하는 일에 집중하고 있다. 또한, 오픈소스 기반의 다양한 데이터베이스를 플랫폼 개발에 적용하는 방법에 관심을 크게 기울이며 오픈 소스 기반 모바일 데이터베이스와 관련된 컨설팅을 다수 수행했다. 내장형 시스템에서 사용하는 데이터 베이스 시스템 최적화 기술과 최신 웹 프로그래밍 기술도 지속적으로 탐구한다. 다양한 웹 프로그래밍 기술을 이용한 서비스를 제공하는 일에 앞장서 기여하고자 한다. 에이콘출판사에서 출간한 『MySQL Fifth Edition 한국어판』(2014년)을 번역했다.

목차

목차
  • 1부 개요
  • 1장. Node.js-to-AngularJS 스택 소개
    • 기본 웹 개발 프레임워크 이해
    • Node.js-to-AngularJS 스택 컴포넌트 이해
    • 요약
    • 다음 장에서 다룰 내용

  • 2장. 자바스크립트 기본 학습
    • 변수 선언
    • 자바스크립트 데이터 형식
    • 연산자 사용
    • 루프 구현
    • 함수 생성
    • 변수 범위
    • 자바스크립트 객체 사용
    • 문자열 조작
    • 배열 사용
    • 에러 처리 부분 추가
    • 요약
    • 다음 장에서 다룰 내용


  • 2부 Node.js 학습
  • 3장. Node.js 입문
    • Node.js 이해
    • Node.js 설치
    • Node.js 패키지 사용
    • Node.js 애플리케이션 작성
    • 데이터를 콘솔에 쓰기
    • 요약
    • 다음 장에서 다룰 내용

  • 4장. Node.js에서 이벤트, 리스너, 타이머, 콜백을 사용
    • Node.js 이벤트 모델 이해하기
    • 이벤트 큐에 작업을 추가
    • 콜백 구현
    • 요약
    • 다음 장에서 다룰 내용

  • 5장. Node.js의 데이터 입출력 처리
    • JSON으로 하는 작업
    • 버퍼 데이터를 대상으로 Buffer 모듈을 사용
    • 스트림 데이터 사용을 위한 Stream 모듈 사용하기
    • zlib를 사용한 데이터 압축 및 해제
    • 요약
    • 다음 장에서 다룰 내용

  • 6장. Node.js에서 파일시스템에 접근
    • 동기적 파일 시스템 호출 vs. 비동기적 파일 시스템 호출
    • 파일 열기 및 닫기
    • 파일 쓰기
    • 파일 읽기
    • 기타 파일 시스템 작업
    • 요약
    • 다음 장에서 다룰 내용

  • 7장. HTTP 서비스를 Node.js로 구현
    • URL 처리
    • 질의 문자열과 폼 전달인자 처리
    • 요청, 응답, 서버 객체 이해
    • Node.js에서 HTTP 클라이언트와 HTTP 서버를 구현
    • HTTPS 서버와 HTTPS 클라이언트를 구현
    • 요약
    • 다음 장에서 다룰 내용

  • 8장. Node.js에서 구현하는 소켓 서비스
    • 네트워크 소켓 이해
    • TCP 서버와 소켓 객체 이해하기
    • TCP 소켓 서버와 클라이언트 구현
    • TLS 서버와 TLS 클라이언트를 구현
    • 요약
    • 다음 장에서 다룰 내용

  • 9장. Node.js의 다중 프로세서를 사용한 애플리케이션 확장
    • process 모듈 이해
    • 자식 프로세스 구현
    • 프로세스 클러스터 구현
    • 요약
    • 다음 장에서 다룰 내용

  • 10장. 추가 Node.js 모듈 사용
    • os 모듈 사용하기
    • util 모듈 사용
    • 요약
    • 다음 장에서 다룰 내용


  • 3부 몽고DB 학습
  • 11장. NoSQL과 몽고DB 이해
    • 왜 NoSQL인가?
    • 몽고DB 이해
    • 몽고DB 데이터 형식
    • 데이터 모델 계획
    • 요약
    • 다음 장에서 다룰 내용

  • 12장. 몽고DB 활용 입문
    • 몽고DB 환경 구축
    • 사용자 계정 관리
    • 접근 제어 설정
    • 데이터베이스 관리
    • 컬렉션 관리
    • 요약
    • 다음 장에서 다룰 내용

  • 13장. 몽고DB와 Node.js 연계 활용 입문
    • Node.js에 몽고DB 드라이버를 추가
    • Node.js에서 몽고DB로 접속
    • 몽고DB Node.js 드라이버에 사용된 객체 이해
    • 데이터베이스 접근과 조작
    • 컬렉션 접근 및 조작
    • 요약
    • 다음 장에서 다룰 내용

  • 14장. Node.js에서 몽고DB 문서 다루기
    • 데이터베이스 변경 선택 사항 이해
    • 데이터베이스 갱신 연산자 이해
    • 컬렉션에 문서 추가
    • 컬렉션에서 문서를 검색
    • 컬렉션의 문서를 갱신
    • 컬렉션의 문서를 원자적으로 수정
    • 컬렉션에 문서를 저장
    • 컬렉션에 문서 삽입을 위해 upsert를 사용
    • 문서를 컬렉션에서 삭제
    • 컬렉션에서 하나의 문서를 삭제
    • 요약
    • 다음 장에서 다룰 내용

  • 15장. Node.js에서 몽고DB 문서에 접근
    • 데이터 세트 소개
    • 질의 객체 이해
    • options 객체 이해
    • 문서의 특정 세트 탐색
    • 문서 세기
    • 결과 세트 제한
    • 결과 세트 정렬
    • 고유한 필드 값 검색
    • 결과 분류
    • 결과를 집계해 맵리듀스 적용
    • 요약
    • 다음 장에서 다룰 내용

  • 16장. 몽구스를 사용한 스키마 구조화와 검증
    • 몽구스 이해
    • 몽구스를 사용해 몽고DB 데이터베이스에 연결하기
    • 스키마 정의
    • 모델 컴파일
    • Query 객체 이해
    • 문서 객체 이해
    • 몽구스를 사용한 문서 탐색
    • 몽구스를 사용해 문서를 추가
    • 몽구스를 사용해 문서를 갱신
    • 몽구스를 사용해 문서를 삭제
    • 몽구스를 사용해 문서를 집계
    • 검증 프레임워크 사용
    • 미들웨어 함수 구현
    • 요약
    • 다음 장에서 다룰 내용

  • 17장. 고급 몽고DB 개념
    • 인덱스 추가
    • 제한 컬렉션 사용
    • 복제 적용
    • 샤딩 구현
    • GridFS 저장 구현
    • 몽고DB 데이터베이스 수리
    • 몽고DB 백업
    • 요약
    • 다음 장에서 다룰 내용


  • 4부 익스프레스 모듈 사용
  • 18장. Node.js에서 익스프레스를 구현
    • 익스프레스 시동
    • 루트 환경 구성
    • Request 객체 사용
    • Response 객체 사용
    • 템플릿 엔진 구현
    • 요약
    • 다음 장에서 다룰 내용


  • 19장. 익스프레스 미들웨어 구현
    • 미들웨어 이해
    • query 미들웨어 사용
    • 정적 파일 전달
    • POST 본문 데이터 처리하기
    • 쿠키 주고받기
    • 세션 구현
    • 기본 HTTP 인증 적용
    • 세션 인증 구현
    • 사용자 정의 미들웨어 생성
    • 요약
    • 다음 장에서 다룰 내용


  • 5부 앵귤러JS 학습
  • 20장. 앵귤러JS 입문
    • 왜 앵귤러JS를 사용하는가?
    • 앵귤러JS 이해
    • 앵귤러JS 수명 주기 개요
    • 앵귤러JS와 현 자바스크립트 및 제이쿼리의 결합
    • 앵귤러JS를 Node.js 환경에 추가
    • HTML 문서에서 하는 앵귤러JS 부트스트랩
    • 전역 API 사용
    • 기본 앵귤러JS 애플리케이션 만들기
    • 요약
    • 다음 장에서 다룰 내용

  • 21장. 앵귤러JS 모듈과 의존성 주입 이해
    • 모듈과 의존성 주입 개요
    • 앵귤러JS 모듈 정의
    • 의존성 주입 구현
    • 요약
    • 다음 장에서 다룰 내용

  • 22장. 한 데이터 모델이 되게 범위를 구현
    • 범위 이해
    • 범위 계층구조 구현
    • 이벤트 전달 및 브로드캐스팅
    • 요약

  • 23장. 뷰를 생성하기 위해 앵귤러JS 템플릿 사용하기
    • 템플릿 이해
    • 표현식 사용
    • 필터 사용
    • 사용자 맞춤형 필터 만들기
    • 요약
    • 다음 장에서 다룰 내용

  • 24장. 앵귤러JS 뷰에서 지시자를 구현
    • 지시자 이해하기
    • 빌트인 지시자 사용하기
    • HTML 확장을 위한 자신만의 지시자 만들기
    • 요약
    • 다음 장에서 다룰 내용

  • 25장. 웹 애플리케이션에서 앵귤러JS 서비스를 구현
    • 앵귤러JS 서비스 이해
    • 빌트인 서비스 사용
    • 맞춤형 서비스 만들기
    • 요약
    • 다음 장에서 다룰 내용


  • 6부 웹 애플리케이션 컴포넌트 개발 실무
  • 26장. 웹사이트에 사용자 계정 추가
    • 사용한 라이브러리
    • 프로젝트 디렉토리 구조
    • 사용자 모델 정의
    • 서버 생성
    • 루트 구현
    • 사용자 컨트롤러 루트 구현
    • 사용자 뷰와 인증 뷰 구현
    • 앵귤러JS 모듈과 컨트롤러 구현
    • 소셜 미디어 계정을 인증 소스로 사용
    • 요약
    • 다음 장에서 다룰 내용

  • 27장. 코멘트 스레드를 페이지에 추가
    • 라이브러리 사용
    • 프로젝트 디렉토리 구조
    • 코멘트, 응답, 포토, 페이지 모델 정의
    • 코멘트 서버 만들기
    • 뷰지원을 위한 루트를 구현하고 코멘트를 추가
    • 모델 기반 컨트롤러 루트 구현
    • Photo 뷰와 Comment 뷰 구현
    • 앵귤러JS 모듈과 컨트롤러를 구현해 코멘트 뷰를 지원
    • 애플리케이션 초기화
    • 요약
    • 다음 장에서 다룰 내용

  • 28장. 자신만의 장바구니 만들기
    • 프로젝트 내용
    • 사용된 라이브러리
    • 프로젝트 디렉토리 구조
    • 고객 모델, 제품 모델, 주문 모델을 정의
    • 장바구니 서버 만들기
    • 제품 요청, 장바구니 요청, 주문 요청 지원을 위한 루트 구현
    • 모델 기반 컨트롤러 루트 구현
    • 고객 모델 컨트롤러 구현
    • 장바구니와 구매 내역 승인 뷰 구현
    • 앵귤러JS 모듈과 컨트롤러를 장바구니 뷰 지원하기 위해 구현
    • 애플리케이션 초기화
    • 요약
    • 다음 장에서 다룰 내용

  • 29장. 대화형 웹 2.0 애플리케이션 컴포넌트 만들기
    • 프로젝트 내용
    • 사용된 라이브러리
    • 프로젝트 디렉토리 구조
    • 프로젝트 모델 정의
    • 애플리케이션 서버 만들기
    • 뷰를 지원할 루트 구현
    • 탭 뷰 구현
    • 날씨 서비스 뷰 구현
    • 드래그 가능한 엘리먼트 만들기
    • 동적 데이터 액세스 구현
    • 애플리케이션 초기화

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.33. 아래에서 4번째 줄]
JASON

JSON

[p.45 : 노트 위 추가]
var newVar = null;

[p.64 : 3행]
배열의 요소 수를 정하려면
->
배열의 요소 수를 구하려면

[p.83: 8행]
5. 목록 3.2의 7-14줄의
->
5. 목록 3.3의 7-14줄의

[p.106 : 그림 4.9]

[p.107 : 그림 4.10]

[p.473. 중간 코드]
https://ajax.googleapis.com/ajax/libs/앵귤러JS/1.2.5/angular.min.js

https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js

[p.474. 중간 코드]
http://code.앵귤러JS.org/1.2.9/angular.min.js

http://code.angularjs.org/1.2.9/angular.min.js

[p.613 : 4행]
두 개이 주 세션으로
->
두 개의 주 세션으로