ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5장 express 추가 구성, 다양한 환경 대응
    MeanStack (deprecated) 2016. 6. 8. 23:55




    이번엔 express 를 제대로 활용하기 위한 외부모듈 추가와 다양한 환경에서 다르게 동작하게 하기 위한 환경을 


    구성을 해본다. 


    예를 들면 개발환경에서는 logger 를 보기 원하지만 상용환경에서는 logger 가 필요 하지 않고 응답데이터를 


    압축하여 조금 더 빠른 환경을 원할 수 있다. 


    이를 구분하기 위해서 process.env 속성을 사용한다. process.env는 전역 변수이며, 미리 정의된 환경변수에


    대한 접근을 허용한다. 가장 일반적인 환경 변수는 NODE_ENV 이다. 


    사용하면서 알아보자.  




    이를 위해 추가로 설치 할 모듈은 morgan, compression, body-parser, method-override 이다. 


    package.json 이 있는 폴더로 가서 cmd 창을 열자.


    npm install --save 명령으로 위 모듈들을 차례대로 설치하거나 package.json 파일의 dependencies 에 적고 


    한번에 설치 하여도 된다. 


    각 모듈에 대해서 설명하자면 



    morgan :  로거 미들웨어 제공 


    compression : 응답 압축 지원 


    body-parser : 요청 데이터의 처리 


    method-override : DELETE, PUT 등과 같이 HTTP 동사 지원 기능



    이제 설치 했으니 config 의 express-config.js 파일을 수정해야 한다. 



    var express = require('express'),
        morgan = require('morgan'),
        compress = require('compression'),
        bodyParser = require('body-parser'),
        methodOverride = require('method-override')
        ;
    
    module.exports = function() {
        var app = express();
    
        if(process.env.NODE_ENV === 'development') {
            app.use(morgan('dev'));
        } else if (process.env.NODE_ENV === 'production') {
            app.use(compress());
        }
    
        app.use(bodyParser.urlencoded({
            extended : true
        }));
        app.use(bodyParser.json());
        app.use(methodOverride());
        require('../app/routes/index.server.routes.js')(app);
        return app;
    }
    


    추가된 코드를 살펴보자. 


    먼저 위에서 설치 했던 4가지 모듈을 require 시켰다.  


    그리고 process.env.NODE_ENV 에 따라 morgan 을 사용 할 지 compress 를 사용할지를 정의하고 있다.


    urlencoded 설정에 extended : true 로 설정을 하고  bodyParser.json 과 methodOverride 를 사용하도록 


    설정하였다. 


    이제는 process.env.NODE_ENV 에 값을 주기 위해 StartApp.js 의 코드를 수정하자. 



    process.env.NODE_ENV = process.env.NODE_ENV || 'development';
    
    var express = require('./config/express_config');
    
    var app = express();
    app.listen(3000);
    module.exports = app;
    
    console.log('Server running at localhost');
    


    StartApp.js 의 윗 부분에 process.env.NODE_ENV 횐경변수를 설정하는 코드를 추가 하였다. 


    이렇게 해놓으면 만약 NODE_ENV 환경변수가 설정되어 있지 않다면 기본적으로 development 로 설정되는 것을


    기억하자. 이제 저장을 하고 실행 해보자. 




    서버를 실행하도  http://localhost:3000 으로 접속 한 뒤 콘솔창을 보면 위 스크린샷과 같이 log 정보가 콘솔창에 


    나타날 것 이다.  만약 StartApp.js 에서 development 를 다른 이름으로 바꾼다면 위에 설정 해 놓았듯이 


    logger 는 작동하지 않을 것 이다. 


    이를 활용하여 추후 다양한 환경에 다양한 응답방식을 보내도록 구현 할 수 있을 것 이다.


    NODE_ENV 환경변수를 코드에서가 아닌 직접 변경하기 위해서는 cmd 창에서 set NODE_ENV = development 


    라는 명령을 실행하면 바뀔 것 이다. 





    이런 환경파일 역시 추후 다양한 환경에 다양한 응답을 하는 application 을 만들었을 때 유지보수 가 쉽도록 


    미리 환경구성 집합을 만들어 놓자. 


    먼저 config 폴더로 가서 env 폴더를 만들고 내부에 development.js 파일을 만들고 코드를 적자.



    module.exports =  {
      // 여기에 환경구성옵션 을 넣을 것 이다.
    }
    



    단순히 exports 시키는 코드만 있지만 나중에 채울 것 이기에 지금은 비워 놓자. 


    그리고 config 폴더로 가서 config.js 파일을 만들고 코드를 적자.



    module.exports = require('./env/' + process.env.NODE_ENV + '.js');
    



    이제 config 파일은 추후 env 파일의 다양한 환경구성파일을 읽어서 다양한 환경을  제공할 것 이다. 




    여기까지 이제 어느정도 준비가 되었다. 


    다음 장에서는 ejs 를 이용한 뷰 시스템을 구성하고 사용자에게 원하는 뷰를 제공하도록 만든다. 



    (끝)





    (현재 폴더 구조)

    댓글