중급 개발자를 위한 MEAN 스택 공략 [MongoDB, Express, AngularJS, Node.js 풀스택 애플리케이션 구축]
- 원서명MEAN Web Development (ISBN 9781783983285)
- 지은이아모스 하비브(Amos Q. Haviv)
- 옮긴이박재호
- ISBN : 9788960777217
- 35,000원
- 2015년 06월 19일 펴냄 (절판)
- 페이퍼백 | 400쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 웹 프로페셔널
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
요약
최근 풀스택 엔지니어라는 용어가 유행하면서 웹 애플리케이션을 개발하는 수단으로서 자바스크립트 기반의 MEAN 스택에 대한 관심이 그 어느 때보다 높아지고 있다. 이 책은 MEAN(MongoDB, Express, AngularJS, Node.js)을 사용해 애플리케이션을 완성하는 방법을 개별 구성 요소의 설명과 함께 심도 있게 소개한다. 예제를 위한 예제에서 벗어나 완성도 높은 애플리케이션 개발에 꼭 필요한 다양한 인증 방법과 익스프레스와 잘 어울리는 EJS 템플릿 엔진을 사용해 실전에 가까운 예제를 제공한다. mean.io와 mean.js를 만든 사람이 집필한 책답게 MEAN에 대한 설명이 이해하기 쉽고 명확할뿐더러 예제 프로젝트 아키텍처 수립 방식과 구성 요소의 분할과 연결 방법에서도 배울 점이 많을 것이다. 이 책을 읽고 나면 MEAN 개발과 관련된 지식 수준과 자신감이 한 단계 높아지리라 믿는다.
이 책에서 다루는 내용
■ 익스프레스(Express) 애플리케이션 설정과 실행
■ 애플리케이션 데이터를 저장하고 인출하기 위한 MongoDB 사용
■ 익스프레스 애플리케이션을 MongoDB에 연결하고 몽구스(Mongus) 모델을 사용
■ 사용자 인증을 관리하고 패스포트를 사용한 다양한 로그인 옵션 제공
■ MEAN 프로젝트에서 AngularJS 애플리케이션의 구조화와 활용
■ Socket.io를 사용한 클라이언트와 서버 사이의 실시간 통신
■ 애플리케이션의 익스프레스와 AngularJS 엔티티 테스트
■ 인기 있는 외부 도구를 사용한 MEAN 애플리케이션의 효율적인 개발
이 책의 대상 독자
MEAN 스택을 사용해 현대적인 웹 애플리케이션을 구축하는 방법을 배우는 데 관심이 많은 웹 또는 풀스택 자바스크립트 개발자에게 적합하다.
이 책의 구성
1장. ‘MEAN 소개’에서는 MEAN 스택을 소개하고 전제 조건에 맞춰 운영체제별로 다양한 소프트웨어 설치 방법을 보여준다.
2장. ‘노드 시작’에서는 노드의 기초와 웹 애플리케이션 개발을 위한 노드 사용 방식을 설명한다.
3장. ‘익스프레스 웹 애플리케이션 구축’에서는 MVC 패턴을 중심으로 익스프레스 애플리케이션 생성과 구조화 방법을 알아본다.
4장. ‘MongoDB 소개’에서는 MongoDB의 기본과 애플리케이션 데이터를 저장하기 위한 MongoDB 사용 방법을 알아본다.
5장. ‘몽구스 소개’에서는 익스프레스 애플리케이션을 MongoDB 데이터베이스와 연결하기 위한 몽구스 사용 방법을 보여준다.
6장. ‘패스포트를 사용한 사용자 인증 관리’에서는 사용자의 인증 관리와 다양한 로그인 옵션 제공 방법을 설명한다.
7장. ‘AngularJS 소개’에서는 익스프레스 애플리케이션과 연계한 AngularJS 애플리케이션 구현 방법을 알아본다.
8장. ‘MEAN CRUD 모듈 생성’에서는 MEAN 애플리케이션 엔티티 작성과 사용 방법을 설명한다.
9장. ‘Socket.io을 사용한 실시간 기능 추가’에서는 클라이언트와 서버 사이의 실시간 통신 기능 작성과 사용 방법을 알아본다.
10장. ‘MEAN 애플리케이션 테스트’에서는 MEAN 애플리케이션의 다양한 부문을 자동으로 테스트하는 방법을 알아본다.
11장. ‘MEAN 애플리케이션 자동화와 디버깅’에서는 MEAN 애플리케이션의 더욱 효율적인 개발 방법을 설명한다.
목차
목차
- 1 MEAN 소개
- 3계층 웹 애플리케이션 개발
- 자바스크립트의 진화
- MEAN 소개
- MongoDB 설치
- 윈도우에서 MongoDB 설치
- 수동으로 MongoDB 시작
- 윈도우 서비스로 MongoDB 시작
- 맥 OS X와 리눅스에서 MongoDB 설치
- 바이너리로 MongoDB 설치
- 패키지 관리자를 사용한 MongoDB 설치
- MongoDB 셸 사용
- 윈도우에서 MongoDB 설치
- 노드 설치
- 윈도우에서 노드 설치
- 맥 OS X에서 노드 설치
- 리눅스에서 노드 설치
- 노드 시작
- NPM 소개
- NPM 사용
- NPM 설치 과정
- package.json 파일을 사용한 의존성 관리
- 정리
- 2 노드 시작
- 노드 소개
- 자바스크립트 이벤트 구동 프로그래밍
- 노드 이벤트 구동 프로그래밍
- 자바스크립트 클로저
- 노드 모듈
- CommonJS 모듈
- 노드 핵심 모듈
- 노드 외부 모듈
- 노드 파일 모듈
- 노드 폴더 모듈
- 노드 웹 애플리케이션 개발
- 커넥트 모듈 만나기
- 커넥트 미들웨어
- 커넥트 미들웨어의 순서 이해
- 커넥트 미들웨어 마운트
- 커넥트 모듈 만나기
- 정리
- 노드 소개
- 3 익스프레스 웹 애플리케이션 구축
- 익스프레스 소개
- 익스프레스 설치
- 첫 익스프레스 애플리케이션 생성
- 애플리케이션, 요청, 응답 객체
- 애플리케이션 객체
- 요청 객체
- 응답 객체
- 외부 미들웨어
- MVC 패턴 구현
- 애플리케이션 폴더 구조
- 수평 폴더 구조
- 수직 폴더 구조
- 파일 이름 관례
- 수평 폴더 구조 구현
- 애플리케이션 폴더 구조
- 익스프레스 애플리케이션 구성
- 환경 구성 파일
- 뷰 생성
- 뷰 시스템 구성
- EJS 뷰 생성
- 정적 파일 서비스
- 세션 구성
- 정리
- 4 MongoDB 소개
- NoSQL 소개
- MongoDB 소개
- MongoDB의 핵심 기능
- BSON 형식
- MongoDB와 임의 질의
- MongoDB 색인
- MongoDB 복제 집합
- MongoDB 샤딩
- MongoDB 셸
- MongoDB 데이터베이스
- MongoDB 콜렉션
- MongoDB CRUD 연산
- 새로운 다큐먼트 생성
- insert( )를 사용한 다큐먼트 생성
- update( )를 사용한 다큐먼트 생성
- save( )를 사용한 다큐먼트 생성
- 다큐먼트 읽기
- 모든 콜렉션 다큐먼트 검색
- 동등 구문 사용
- 질의 연산자 사용
- AND/OR 질의 생성
- 기존 다큐먼트 갱신
- update( )를 사용한 다큐먼트 갱신
- save( )를 사용한 다큐먼트 갱신
- 다큐먼트 삭제
- 모든 다큐먼트 삭제
- 정리
- 5 몽구스 소개
- 몽구스 소개
- 몽구스 설치
- MongoDB에 연결
- 몽구스 스키마 이해
- 사용자 스키마와 모델 생성
- User 모델 등록
- save()를 사용한 새로운 사용자 생성
- find( )를 사용한 여러 사용자 다큐먼트 검색
- find( )를 사용한 고급 질의
- findOne()을 사용한 단일 사용자 다큐먼트 읽기
- 기존 사용자 다큐먼트 갱신
- 기존 사용자 다큐먼트 삭제
- 몽구스 스키마 확장
- 기본값 정의
- 스키마 변경자 활용
- 미리 정의된 변경자
- 맞춤식 설정 변경자
- 맞춤식 인출 변경자
- 가상 속성 추가
- 색인을 사용한 질의 최적화
- 맞춤식 모델 메소드 정의
- 맞춤식 정적 메소드 정의
- 맞춤식 인스턴스 메소드 정의
- 모델 검증
- 미리 정의된 검증기
- 맞춤식 검증기
- 몽구스 미들웨어 활용
- pre 미들웨어 활용
- post 미들웨어 활용
- 몽구스DBRef 활용
- 정리
- 몽구스 소개
- 6 패스포트를 사용한 사용자 인증 관리
- 패스포트 소개
- 패스포트 설치
- 패스포트 구성
- 패스포트 전략 이해
- 패스포트의 지역 전략 사용
- 패스포트의 지역 전략 모듈 설치
- 패스포트의 지역 전략 구성
- User 모델 변경
- 인증 뷰 생성
- User 컨트롤러 변경
- 플래시 오류 메시지 출력
- 사용자 라우트 연결
- 패스포트의 지역 전략 사용
- 패스포트 OAuth 전략 이해
- OAuth 전략 설정
- OAuth 사용자 생성 처리
- 패스포트의 페이스북 전략 사용
- 패스포트의 트위터 전략 등록
- 패스포트의 구글 전략 등록
- OAuth 전략 설정
- 정리
- 패스포트 소개
- 7 AngularJS 소개
- AngularJS 소개
- AngularJS의 핵심 개념
- AngularJS의 핵심 모듈
- angular 전역 객체
- AngularJS 모듈
- 애플리케이션 모듈
- 외부 모듈
- 외부 개발자 모듈
- 양방향 데이터 결합
- 의존성 주입
- AngularJS에서 의존성 주입
- AngularJS 지시자
- 핵심 지시자
- 맞춤식 지시자
- AngularJS 애플리케이션 부트스트랩
- 자동 부트스트랩
- 수동 부트스트랩
- AngularJS의 핵심 모듈
- AngularJS 설치
- 바우어 의존성 관리자 소개
- 바우어 의존성 관리자 구성
- 바우어를 사용한 AngularJS 설치
- AngularJS 구성
- AngularJS 애플리케이션 구조화
- AngularJS 애플리케이션 부트스트랩
- AngularJS MVC 엔티티
- AngularJS 뷰
- AngularJS 컨트롤러와 영역
- AngularJS 라우팅
- ngRoute 모듈 설치
- URL 정책 구성
- AngularJS 애플리케이션 라우트
- AngularJS 서비스
- AngularJS 기본 포함 서비스
- AngularJS 서비스 생성
- AngularJS 서비스 사용
- AngularJS 인증 관리
- user 객체 출력
- Authentication 서비스 추가
- Authentication 서비스 사용
- 정리
- 8 MEAN CRUD 모듈 생성
- CRUD 모듈 소개
- 익스프레스 구성 요소 설정
- 몽구스 모델 생성
- 익스프레스 컨트롤러 설정
- 익스프레스 컨트롤러의 오류 처리 메소드
- 익스프레스 컨트롤러의 create( ) 메소드
- 익스프레스 컨트롤러의 list( ) 메소드
- 익스프레스 컨트롤러의 read( ) 미들웨어
- 익스프레스 컨트롤러의 update( ) 메소드
- 익스프레스 컨트롤러의 delete( ) 메소드
- 인증 미들웨어 구현
- 인가 미들웨어 구현
- 익스프레스 라우트 배선
- 익스프레스 애플리케이션 구성
- ngResource 모듈 소개
- ngResource 모듈 설치
- $resource 서비스 사용
- AngularJS MVC 모듈 구현
- AngularJS 모듈 서비스 생성
- AngularJS 모듈 컨트롤러 설정
- AngularJS 컨트롤러의 create( ) 메소드
- AngularJS 컨트롤러의 find( )와 findOne( ) 메소드
- AngularJS 컨트롤러의 update( ) 메소드
- AngularJS 컨트롤러의 delete( ) 메소드
- AngularJS 모듈 뷰 구현
- create-article 뷰
- view-article 뷰
- edit-article 뷰
- list-articles 뷰
- AngularJS 모듈 라우트 배선
- 모듈 구현 마무리
- 정리
- 9 Socket.io를 사용한 실시간 기능 추가
- 웹소켓 소개
- Socket.io 소개
- Socket.io 서버 객체
- Socket.io 핸드셰이크
- Socket.io 구성 미들웨어
- Socket.io 클라이언트 객체
- Socket.io 이벤트
- 이벤트 처리
- 이벤트 전송
- Socket.io 이름공간
- Socket.io 서버 이름공간
- Socket.io 클라이언트 이름공간
- Socket.io 룸
- 룸 가입과 탈퇴
- 룸으로 이벤트 전송
- Socket.io 서버 객체
- Socket.io 설치
- Socket.io 서버 구성
- Socket.io 세션 구성
- connect-mongo와 cookie-parser 모듈 설치
- connect-mongo 모듈 구성
- Socket.io 세션 구성
- Socket.io 채팅 구축
- 채팅 서버의 이벤트 처리기 설정
- Socket 서비스 생성
- 채팅 컨트롤러 생성
- 채팅 뷰 생성
- 채팅 라우트 추가
- 채팅 구현 마무리
- 정리
- 10 MEAN 애플리케이션 테스트
- 자바스크립트 테스트 소개
- TDD, BDD, 단위 테스트
- 테스트 프레임워크
- 단정 라이브러리
- 테스트 실행기
- 익스프레스 애플리케이션 테스트
- 모카 소개
- Should.js 소개
- 슈퍼테스트 소개
- 모카 설치
- Should.js와 슈퍼테스트 모듈 설치
- 테스트 환경 구성
- 첫 모카 테스트 작성
- 익스프레스 모델 테스트
- 익스프레스 컨트롤러 테스트
- 모카 테스트 실행
- AngularJS 애플리케이션 테스트
- 자스민 프레임워크 소개
- AngularJS 단위 테스트
- 카르마 테스트 실행기 소개
- 카르마 명령행 도구 설치
- 카르마의 의존성 설치
- 카르마 테스트 실행기 구성
- AngularJS 구성 요소 흉내내기
- AngularJS 단위 테스트 작성
- 첫 단위 테스트 작성
- AngularJS 단위 테스트 실행
- AngularJS E2E 테스트
- 프로트랙터 테스트 실행기 소개
- 프로트랙터 테스트 실행기 설치
- 프로트랙터 테스트 실행기 구성
- 첫 E2E 테스트 작성
- AngularJS E2E 테스트 실행
- 정리
- 자바스크립트 테스트 소개
- 11 MEAN 애플리케이션 자동화와 디버깅
- 그런트 작업 실행기 소개
- 그런트 작업 실행기 설치
- 그런트 구성
- 그런트를 사용한 애플리케이션 실행
- 그런트를 사용한 애플리케이션 테스트
- 그런트를 사용한 애플리케이션 린트
- 그런트를 사용한 파일 변경 감시
- node-inspector로 익스프레스 디버깅
- node-inspector의 그런트 작업 설치
- node-inspector의 그런트 작업 구성
- 디버그 그런트 작업 실행
- 배터랑으로 AngularJS 디버깅
- 배터랑 사용
- 배터랑 모델
- 배터랑 성능
- 배터랑 의존성
- 배터랑 사용
- 정리
- 그런트 작업 실행기 소개
도서 오류 신고
정오표
정오표
2015. 7.29
[p.192 코드 16~23행]
2016. 1. 11 수정사항
[p.101: 4행(js 삭제)]
server.routes.js') -> server.routes')
[p.220: 코드부(" "추가)]
[p. 221: 상단 코드(" "추가)]
[p. 221: 하단 코드(" "추가)]