express/lib/aplication
pp.defaultConfiguration = function defaultConfiguration() {
var env = process.env.NODE_ENV || "development";
// default settings
this.enable("x-powered-by");
this.set("etag", "weak");
this.set("env", env);
this.set("query parser", "extended");
this.set("subdomain offset", 2);
this.set("trust proxy", false);
// trust proxy inherit back-compat
Object.defineProperty(this.settings, trustProxyDefaultSymbol, {
configurable: true,
value: true,
});
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
setPrototypeOf(this.request, parent.request);
setPrototypeOf(this.response, parent.response);
setPrototypeOf(this.engines, parent.engines);
setPrototypeOf(this.settings, parent.settings);
});
// setup locals
this.locals = Object.create(null);
/**
* hasOwnProperty등의 기본 메서드조차 없는 개체를 생성한다.
*/
// top-most app is mounted at /
this.mountpath = "/";
// default locals
this.locals.settings = this.settings;
// default configuration
this.set("view", View);
this.set("views", resolve("views"));
/**
* resolve
* epxress가 작동되는 지점의 절대경로를 가져와서 인자로 받아온 값과 합친다.
*
* 예
* express가 작동되는 지점의 절대 경로 -> /Users/user/Documents/src
* this.set("views")를 통해 받아올수 있는 경로 /Users/user/Documents/src/views
* 해당 경로에 views디렉토리 유무와는 상관없이 설정된다.
*/
this.set("jsonp callback name", "callback");
if (env === "production") {
this.enable("view cache");
/**
* env === "production"인경우
* settings에 view cache : true가 설정된다.
*/
}
Object.defineProperty(this, "router", {
get: function () {
throw new Error(
"'app.router' is deprecated!\nPlease see the 3.x to 4.x migration guide for details on how to update your app."
);
},
});
/**
* deprecated된 프로퍼티를 불러오려는 경우 에러를 발생시킨다.
*
* 변경 전 사용 방식
* app.use(app.router);
* app.get("/", ...);
*
* 변경 후 사용 방식
* app.get("/", ...);
*/
};