Sunday, November 20, 2016

Lookup expressjs #2 lib/application.js

* application.js



var compileETag = require('./utils').compileETag;

var slice = Array.prototype.slice;


이처럼 function들을 즉각적으로 사용하지 않고,  variable로 사용하는 컨벤션이 있는데,
딱히 좋은지는 모르겠습니다.

compleEtag function 은 그렇다 치더라도,
slice 의 경우 코드에서 Array.prototype.slice 인지, user defined 된 slice 라는걸 알기 어렵다는 단점이 우선 눈에 띕니다..

좋은 점은 반복적으로 사용되면, 코드를 줄이는 효과가 있을것 같기는 한데,
slice 와 같이 well-known function 에 대해서 user define 하지 않는다는 규칙이 Team 에 존재한다면 괜찮을수 있다 생각됩니다.

그렇지만, new member가 숙지해야 될 규칙이 하나더 생기기에 역시 그렇게 좋은 효과로 보기 어렵습니다.


application.js 는 expressjs application 설정등 초기화하고, application life cycle 로 판단되는데, 일단 살펴 봐야 겠습니다.


app.defaultConfiguration = function defaultConfiguration() {

  var env = process.env.NODE_ENV || 'development';



.....



  debug('booting in %s mode', env);



  this.on('mount', function onmount(parent) {

    // inherit trust proxy

    if (this.settings[trustProxyDefaultSymbol] === true

      && typeof parent.settings['trust proxy fn'] === 'function') {

      delete this.settings['trust proxy'];

      delete this.settings['trust proxy fn'];

    }



    // inherit protos

    this.request.__proto__ = parent.request;

    this.response.__proto__ = parent.response;

    this.engines.__proto__ = parent.engines;

    this.settings.__proto__ = parent.settings;

  });



 ....



  if (env === 'production') {

    this.enable('view cache');

  }



  ...

};


init() -> defaultConfiguration() 을 호출 하는데, 보시는 바와 같이 NODE_ENV 등의 각종 설정들이 초기화 됩니다.
한가지, production 모드 일때 view cache 가 활성화되는걸 볼수 있네요.
이점은 좀 유의 해야 할 필요가 있는것 같습니다.


No comments:

Post a Comment