이 책은 전 세계 수천 명의 노드 개발자들이 사용하는 유명한 웹 프레임워크인 익스프레스Express에 관한 것이다. 이 책에서는 주로 익스프레스 3으로 언급되는 세 번째 버전의 익스프레스를 구체적으로 다룬다.
익스프레스는 정확히 4년 전에 처음 공개되고 나서 눈부신 발전을 거듭해 왔다. 오늘날 익스프레스는 Node.js를 위한 가장 강력한 웹 프레임워크 중 하나로 인정받고 있다. 다양한 배경지식과 경험이 있는 개발자들이 매일 웹 앱을 개발하기 위해 익스프레스를 사용한다. 이제 익스프레스의 인기가 상승함에 따라 관련 도서 한 권을 반드시 가지고 있어야 할 때다.
예전에 만든 익스프레스에 관한 튜토리얼이 온라인에서 많이 알려졌고, 특히 노드와 익스프레스 초보자들에게 큰 인기를 끌었다. 그 이후로 나는 독자의 과거 경력과 배경지식에 대한 별다른 요구사항 없이도 언제든 필요할 때 참고할 수 있는 세부적인 기술 내용으로 가득 찬 익스프레스 서적을 집필하는 것이 꿈이었다. 여러분이 손에 든 이 책은 초보자에게 친숙하면서 동시에 기술적으로 심도 있게 다룬 익스프레스 관련 서적으로서, 이로써 나는 꿈을 이뤘다.
이 책은 익스프레스를 사용하여 다양한 웹 개발을 시작하는 개발자에게 필요한 모든 것을 다룬다.---「저자 서문」
익스프레스(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장은 개발한 앱을 프로덕션 모드에서 동작시키고 벤치 마킹하는 방법을 설명한다. 여기서는 앱 개발의 최종 목적을 상기하고 앱의 성능을 높일 수 있는 방법도 자세히 설명한다. 따라서 상용 목적을 고려한 앱 개발자라면 꼭 챙겨 읽을 것을 권장한다.
이 책은 웹 앱을 처음 접하는 초보자부터 대규모 프로젝트를 구조적이고 효율적으로 구현하려는 개발자까지 어렵지 않게 익스프레스를 접근할 수 있도록 가이드한다. 웹 초보자인 경우, 자바스크립트 객체와 이벤트 처리의 기본 개념을 학습한 후에 이 책을 학습하면 익스프레스에 대한 깊은 지식을 얻을 수 있을 것으로 기대한다. 숙련된 개발자의 경우, 웹 앱을 구조적으로 개발하고, 적은 시간과 노력으로 유연한 유지보수를 할 것이다.
---「옮긴이의 말」