Top

[템플릿 언어로 코드 생성의 자동화와 구조화가 간편한]
익스프레스 프레임워크로 하는 노드 웹 앱 프로그래밍

  • 원서명Express Web Application Development (ISBN 9781849696548)
  • 지은이하게 야파
  • 옮긴이조효성
  • ISBN : 9788960775145
  • 25,000원
  • 2014년 01월 23일 펴냄 (절판)
  • 페이퍼백 | 284쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

판매처

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

책 소개

요약

웹 앱을 구현할 때 익스프레스(Express) 프레임워크를 이용하면 구조적이면서 유지 보수를 하는 동안 시간과 노력을 줄일 수 있는 막강한 장점이 있으며, 이 프레임워크의 장점은 제이드와 스타일러스의 사용을 통해 더욱 확대된다. 그 밖에 자칫 복잡하게 쓰는 HTML 폼, 쿠키, 세션 관리는 익스프레스 프레임워크를 통해 간편하게 제어할 수 있다. 한편, 익스프레스 프레임워크를 이용한 기능의 구현은 개발자의 요구사항을 세심히 배려하고 있으며, 제품 출시를 위한 단계와 벤치마킹 테스트까지 고려하는 등 매우 정교한 프레임워크다.

이 책에서 다루는 내용

■ 익스프레스의 핵심 내용과 익스프레스 프레임워크와 앱을 구성하는 요소 이해
■ 익스프레스 앱을 위한 제이드 기반 뷰 생성과 제이드 뷰 렌더링
■ 익스프레스 앱이 사용할 수 있는 라우트 생성과 핸들러 함수
■ 다양한 종류의 서버 응답 제공과 여러 가지 에러 처리 방법
■ HTML 폼, 쿠키와 세션을 이용하여 웹 앱의 기능을 동적으로 개발
■ HTML 템플릿 언어 제이드
■ CSS 전처리기 문법인 스타일러스 언어 문법
■ 익스프레스 앱을 제품 출시 준비 단계로 만들기 위한 사용자 정의 절차와 준비 과정

이 책의 대상 독자

이 책은 웹 앱 개발 혹은 전반적인 기술 내용 습득을 위해 익스프레스에 관심이 있는 모든 사람들을 위한 것이다. 이 서적은 초보자가 처음 시작하기에 적합할 수준인 동시에 익스프레스에 익숙하고 좀 더 많은 내용에 갈증을 느끼는 개발자들에게는 훌륭한 청량음료와 같이 자세히 설명한다.

이 책의 구성

'1장, 익스프레스란 무엇인가'에서는 익스프레스에 대한 초보자가 이해하기 쉬우면서 기술적으로도 명확하게 설명한 서두 부분과 초보 단계를 막 끝낸 후 견고한 제반 지식 배양을 위한 관련 주제를 다룬다.

'2장, 첫 번째 익스프레스 앱 만들기'는 모든 익스프레스 웹 앱의 기초를 형성하는 기본 기능을 포함하는 웹 앱 개발에 대한 실용적인 도입부를 다룬 다.

'3장, 익스프레스 라우트의 이해'를 통해 익스프레스가 사용하는 라우트를 상세히 설명한다.

'4장, 서버가 전송하는 응답'은 익스프레스 앱이 요청에 대해 응답하는 다양한 방법을 설명한다.

'5장, 템플릿 언어 제이드'는 제이드 문법과 프로그래밍 기법을 소개한다.

'6장, CSS 전처리기 스타일러스'는 스타일러스(Stylus) 문법과 프로그래밍 기법을 소개한다.

'7장, 폼, 쿠키와 세션'은 폼 처리 방법, 쿠키와 세션 생성 방법을 다룬다.

'8장, 프로덕션 환경의 익스프레스'는 익스프레스 앱을 제품 출시 단계로 끌어올리는 데 필요한 유용한 분야를 다룬다.

저자/역자 소개

저자 서문

이 책은 전 세계 수천 명의 노드 개발자들이 사용하는 유명한 웹 프레임워크인 익스프레스(Express)에 관한 것이다. 이 책에서는 주로 익스프레스 3으로 언급되는 세 번째 버전의 익스프레스를 구체적으로 다룬다.

익스프레스는 정확히 4년 전에 처음 공개되고 나서 눈부신 발전을 거듭해 왔다. 오늘날 익스프레스는 Node.js를 위한 가장 강력한 웹 프레임워크 중 하나로 인정받고 있다. 다양한 배경지식과 경험이 있는 개발자들이 매일 웹 앱을 개발하기 위해 익스프레스를 사용한다. 이제 익스프레스의 인기가 상승함에 따라 관련 도서 한 권을 반드시 가지고 있어야 할 때다.

예전에 만든 익스프레스에 관한 튜토리얼이 온라인에서 많이 알려졌고, 특히 노드와 익스프레스 초보자들에게 큰 인기를 끌었다. 그 이후로 나는 독자의 과거 경력과 배경지식에 대한 별다른 요구사항 없이도 언제든 필요할 때 참고할 수 있는 세부적인 기술 내용으로 가득 찬 익스프레스 서적을 집필하는 것이 꿈이었다. 여러분이 손에 든 이 책은 초보자에게 친숙하면서 동시에 기술적으로 심도 있게 다룬 익스프레스 관련 서적으로서, 이로써 나는 꿈을 이뤘다.

이 책은 익스프레스를 사용하여 다양한 웹 개발을 시작하는 개발자에게 필요한 모든 것을 다룬다.

저자 소개

하게 야파(Hage Yaapa)

소스비츠(Sourcebits) 회사에서 익스프레스(Express)에 자발적으로 참여하는 개발자이자 웹과 노드의 주요 개발 인재다.

야파는 의사가 되고자 인도의 의과대학인 JIPMER에 입학했으나, 중간에 자퇴하고 컴퓨터와 인터넷 분야에 열정을 쏟아 부었다. 1999년부터 지금까지 광범위한 웹 기술을 이용해 웹 사이트와 웹 앱을 지속적으로 개발해 왔다. 독학으로 프로그램을 터득했고, 그가 알고 있는 모든 웹 기술은 인터넷과 웹 관련 서적을 통해 배웠다.

야파는 노드와 익스프레스를 비롯한 다양한 웹 기술 정보를 핵 스패로우 선장의 이름을 따라 주소를 지은 개인 웹 사이트 www.hacksparrow.com에 공개한다.

옮긴이의 말

익스프레스(Express)는 노드 앱을 개발할 때 높은 성능을 제공할 수 있는 웹 프레임워크다. 익스프레스의 주요 특징으로는 강력하고 구조화된 라우팅, 템플릿 언어 지원, 명확한 에러 처리를 들 수 있다. 이와 같은 특징들을 위해 많은 개발자가 심혈을 기울였는데, 이중 TJ Holowaychuk, Ciaran Jessup, Aaron Heckmann, Guillermo Rauch가 핵심적인 역할을 했다. 익스프레스 프레임워크와 함께 사용해 노드 앱을 확장하는 데 기여할 수 있는 서드파티 모듈도 있는데, 이는 express-resource, express-messages, express-configure, express-namespace, express-expose, express-params, express-mongoose가 있다. 서드파티 모듈의 내용을 자세히 알고 싶다면 http://firejune.io/express/를 살펴보기 바란다.

총 8장으로 구성된 이 책은 각 장마다 익스프레스를 사용하는 데 필요한 기본 지식과 관련 예제 코드가 담겨 있다.
우선, 1장에서는 익스프레스의 탄생 배경과 설치 방법을 익힐 수 있다. 또한 이 책을 학습하는 과정에서 알아두어야 할 익스프레스 API 설명과 실제 사용 방법을 배울 수 있다.
1장 내용을 기반으로 2장에서는 기본 기능을 갖춘 익스프레스 앱을 구현하는 내용을 설명한다. 이때 제이드라는 템플릿 언어가 소개된다. 제이드(Jade)를 통해 복잡한 프로젝트에서 좀 더 간편하게 HTML 코드의 생성 방법을 알게 된다. 또한 앱 개발의 목적에 따라 노드 모듈 혹은 미들웨어 사용 방법도 2장에서 알려준다.
2장의 마지막 부분에서는 하나의 앱을 다양한 실행 환경에서 동작시킬 수 있는 방법에 대해서도 간략하게 설명하고 있어, 각 실행 환경에 따라 앱 테스트를 해야 하는 부담을 덜어준다.
3장은 라우트 정의와 사용 방법을 설명하는데, 예를 들면 라우트 식별자와 우선순위 설정, 처리 방법 설정과 구조화를 통한 라우팅 최적화 방법 등을 제시한다.
4장에서는 서버가 전송하는 응답에 대해 HTTP 상태 코드 설정과 서버가 전송하는 데이터 타입, 그리고 다양한 파일 전송 방법을 설명한다. 익스프레스로 사용자 정의 미디어 타입과 HTTP 응답 헤더를 설정하는 방법도 여기에서 자세히 기술한다.
5장과 6장에서는 익스프레스에서 사용할 수 있는 템플릿 언어인 제이드(Jade)와 CSS 코드를 생성하는 스타일러스(Stylus)에 대해 설명한다. 5장은 제이드의 장점과 사용시 주의할 점을 개발자 관점에서 설명하며, 6장에서 설명하는 스타일러스는 개발자들에게 좀 더 편리한 CSS 코드 생성 기법을 제공한다. 제이드는 기존의 HTML 코드에 배반하는 언어가 아닌 HTML 코드를 포용하면서 시간을 절약하면서 HTML 코드의 계층화를 적극 도울 수 있는 템플릿 언어로서, 기존에 배포된 템플릿 언어를 이해하는 데에도 도움이 될 것이다.
7장에서는 익스프레스를 이용해 폼 전송 방법과 쿠키 생성 방법을 학습할 수 있는데, 필요에 따라 서명이 필요한 쿠키를 생성할 때 개발자의 요구에 따라 편의를 제공하는 장점이 있다.
마지막으로 8장은 개발한 앱을 프로덕션 모드에서 동작시키고 벤치 마킹하는 방법을 설명한다. 여기서는 앱 개발의 최종 목적을 상기하고 앱의 성능을 높일 수 있는 방법도 자세히 설명한다. 따라서 상용 목적을 고려한 앱 개발자라면 꼭 챙겨 읽을 것을 권장한다.
이 책은 웹 앱을 처음 접하는 초보자부터 대규모 프로젝트를 구조적이고 효율적으로 구현하려는 개발자까지 어렵지 않게 익스프레스를 접근할 수 있도록 가이드한다. 웹 초보자인 경우, 자바스크립트 객체와 이벤트 처리의 기본 개념을 학습한 후에 이 책을 학습하면 익스프레스에 대한 깊은 지식을 얻을 수 있을 것으로 기대한다. 숙련된 개발자의 경우, 웹 앱을 구조적으로 개발하고, 적은 시간과 노력으로 유연한 유지보수를 할 것이다.

옮긴이 소개

조효성

광운대학교 전자공학과를 졸업하고 동대학원 임베디드 소프트웨어 공학과에서 안드로이드와 블루투스를 전공했다. 현재는 오비고에서 웹 개발자로 활동하고 있는 노드에 관심이 많은 행복 개발자이다. 행복한 HMI WebApp 개발팀에서 차량용 플랫폼에 올라가는 웹 앱을 개발하면서 많은 경험과 실력을 쌓고 있다. 번역 작업을 통해, 책을 읽는 모든 사람에게 꼭 도움이 되기를 바라는 마음을 늘 품고 있다. 『노드로 하는 웹 앱 테스트 자동화』(에이콘출판)를 번역했다.

목차

목차
  • 1 익스프레스란 무엇인가
    • 익스프레스란 무엇인가
      • 익스프레스에 관한 이야기
    • 익스프레스 설치
    • 익스프레스를 구성하는 컴포넌트
      • 애플리케이션 객체
      • 요청 객체
      • 응답 객체
    • 익스프레스에서 사용하는 개념
      • 비동기 자바스크립트
      • 노드 모듈
      • 익스프레스 앱은 전부 노드 모듈
      • 미들웨어
      • 요청 흐름
      • HTTP/HTTPS를 위한 노드 API
    • 요약
  • 2 첫 번째 익스프레스 앱 만들기
    • 익스프레스 앱의 시작
      • 익스프레스 매니페스트 파일
      • 가장 기본적인 익스프레스 앱
        • 익스프레스 앱의 시작과 정지
        • 앱의 출력 내용 분석
      • 뷰 코드를 적용한 익스프레스 앱
      • 익스프레스 앱에 있는 공용 폴더
    • 익스프레스 앱의 자동 생성
    • 미들웨어로 익스프레스 기능 확장하기
    • 노드 모듈로 익스프레스 기능 확장하기
    • 익스프레스 앱에 전달되는 요청을 기록
    • 설정 파일 사용
    • 애플리케이션 옵션값의 설정과 획득
    • 각 개발 환경에서 동작하는 익스프레스
    • 요약
  • 3 익스프레스 라우트의 이해
    • 라우트란 무엇인가?
      • HTTP 요청 함수의 이해
    • router 미들웨어 복습
    • 라우트 정의
      • 라우트 식별자
      • 라우트의 우선순위
    • 라우트 처리방법
    • 라우트 구조화 방법
      • 노드 모듈의 사용
      • 네임스페이스드 라우팅
      • 리소스 요청 라우팅
      • 라우팅 방법 선택하기
    • 요약
  • 4 서버가 전송하는 응답
    • HTTP 응답에 관한 지침
      • HTTP 상태 코드
        • 1XX
        • 2XX
        • 3XX
        • 4XX
        • 5XX
      • HTTP 응답 헤더
      • 미디어 타입
    • 익스프레스에서 사용하는 HTTP 응답
      • HTTP 상태 코드 설정
      • HTTP 헤더 설정
      • 데이터 전송
        • 일반 문자열
        • HTML
        • JSON
        • JSONP
        • 정적 파일 전송
        • 프로그램 로직을 이용한 파일 전송
        • 에러 페이지 제공
        • 내용 협상
        • 요청 리다이렉트
    • 요약
  • 5 템플릿 언어 제이드
    • 제이드란 무엇인가
    • HTML 태그 생성
      • HTML 엘리먼트의 계층구조
      • ID 할당
      • 클래스 할당
      • HTML 속성의 할당
    • 문자열 컨텐트 생성
    • 필터
    • 도큐먼트의 독타입 선언
    • 제이드가 지원하는 프로그램 기법
      • 변수
      • 인터폴레이션
      • 제어 형식
        • 자바스크립트 형식
        • 제이드 형식
    • 모듈화
      • Includes
      • 템플릿 상속
      • 믹스인
    • 인코딩
    • 주석
    • 요약
  • 6 CSS 전처리기 스타일러스
    • 도입
    • 익스프레스에서 스타일러스 활성화하기
    • 선택자
      • 선택자 블록
      • 계층구조
    • 규칙
      • @import
      • @media
      • @font-face
      • @keyframes
      • @extend
      • @CSS
    • 프로그래밍 기법
      • 변수
        • 리터럴
        • 리스트
        • 튜플
        • 리스트 튜플
      • 믹스인
      • 함수
      • 주석
      • 연산자
      • 조건문
        • if, else if, else
        • unless
    • 내장 함수
    • 요약
  • 7 폼, 쿠키와 세션
    • 데이터를 전송하는 폼의 사용
      • GET 전송 처리
        • 폼 데이터 읽기
        • URL 쿼리의 파라미터 읽기
        • 다중 옵션 처리
      • POST 전송 핸들링
        • POST 데이터 파싱 기능의 활성화
        • 폼 데이터 읽기
        • 문자열만 있는 폼의 처리
        • 파일 업로드
        • 파일 업로드에 대한 더 많은 처리
      • 표준 함수를 시뮬레이션한 함수로 폼 전송
    • 이름이 붙여진 세그먼트에 저장되는 데이터
      • 데이터 읽기
    • 데이터 저장을 위한 쿠키 사용
      • 쿠키 생성
      • 쿠키 읽기
      • 쿠키 업데이트
      • 세션 쿠키
      • 서명있는 쿠키
      • 쿠키 삭제
    • 데이터를 저장할 수 있는 세션의 사용
      • 쿠키 기반 세션
      • 세션 스토어 기반 세션
        • 메모리스토어
        • 레디스스토어
        • 몽고스토어
      • 세션 변수
        • 세션 변수 설정
        • 세션 변수 읽기
        • 세션 변수 업데이트
        • 세션 변수 삭제
      • 세션 삭제
        • 쿠키 기반 세션의 삭제
        • 세션스토어 기반 세션의 삭제
    • 요약
  • 8 프로덕션 환경의 익스프레스
    • 프로덕션 환경이란 무엇인가?
      • 프로덕션 모드에서는 무엇이 변경되는가?
      • 프로덕션 환경의 시뮬레이션
    • 앱 벤치마킹
    • 앱 클러스터 생성
    • 민감한 이벤트 처리
      • 앱 서버 종료
      • 예외적인 에러의 처리
        • 예외적인 에러를 처리할 수 있는 try-catch의 적용
        • 예외적인 에러를 처리할 수 있는 도메인의 적용
        • 예외적인 에러가 발생하는 경우, 프로세스를 종료할 것인가 아니면 유지할 것인가?
      • 프로세스 종료 처리
    • 가동시간 보장
      • Forever
      • upstart
    • 리버스 프록시
      • 신뢰 프록시 옵션
    • 요약

도서 오류 신고

도서 오류 신고

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

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

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