Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

express源码里返回的app函数用的设计模式

$
0
0

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,怎么就能直接调用了呢。不是很理解。


Viewing all articles
Browse latest Browse all 14821

Trending Articles