2011년 8월 9일 화요일

[Node.JS+Express] Configuration

express로 생성한 프로젝트의 app.js 내용을 보면 다음과 같은 코드가 들어있다.

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
});

app.configure('production', function(){
  app.use(express.errorHandler()); 
});
app.set으로 설정하는 두 가지 의미는 다음과 같다.
  • views: view가 위치하는 디렉토리를 설정해 준다.
  • view engine: view 템플릿 엔진. 여기서는 jade 엔진을 사용한다는 의미이다.

app.use로 설정하는 것은 미들웨어로써 express에 다양한 기능을 추가할 수 있다.
  • bodyParser: POST 등으로 전송되는 HTML FORM의 데이터를 파싱해 주는 미들웨어.
  • methodOverride: REST API에서 사용되는 PUT 등의 메소드를 별도로 파싱해 주는 미들웨어
  • app.router: 라우터.
  • static: static serving, 즉 URL로 지정된 파일을 그대로 읽어서 전송해 주기 위한 미들웨어이며 해당 정적(static) 파일들이 위치하는 곳을 지정해준다.

app.configuration으로 development 및 production 의 두 가지 설정을 해 주는 부분이 있는데 이는 개발버전과 실제 서비스 버전을 분리해서 특저한 미들웨어를 사용해야 할 경우를 위해 해 주는 작업이다. app.js를 실행시킬 때 NODE_ENV라는 환경변수를 어떤 걸 세팅해 주느냐에 따라 해당 설정이 적용된다. 예를 들어
NODE_ENV=development node app.js
위와 같은 명령으로 서버를 실행시킨 경우 errorHandler가 Exception의 내용과 Exception 발생 시의 Stack의 내용을 브라우저로 전송해 주도록 설정해 주는 것이다. development가 아닌 production으로 설정한 경우에는 에러내용이 브라우저로 전송되지 않는다.

이상이 가장 기본적인 express의 설정 내용이다.

댓글 없음 :