1.createApplication是个工厂函数,每次调用express()都会返回一个新的app函数吧,但是我们使用的时候都是就用一次吧,不知道从涉及角度来看有啥意义。
function createApplication() {
var app = function(req, res, next) {
app.handle(req, res, next);
};
mixin(app, EventEmitter.prototype, false);
mixin(app, proto, false);
app.request = { __proto__: req, app: app };
app.response = { __proto__: res, app: app };
app.init();
return app;
}
这个返回的是个app函数,这里面给app这个function类装载的属性的,EventEmitter.prototype, proto, request, response是不是都是app这个函数类的静态方法吧? 好像mixin源码里用的defineProperty在新的app函数对象上定义的属性。 applcation.js里
app.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);
这个函数直接就用上了this.method,怎么就能直接调用了呢。不是很理解。