首页 > 其他 > 详细

express源码剖析2

时间:2017-01-09 13:17:18      阅读:154      评论:0      收藏:0      [点我收藏+]

当使用express时,代码会这样写:

var express = require(‘express‘);

如果创建一个express的应用,代码会这样写:

var app = express();

那么express()是什么? 源码:

//express()会执行createApplication()。
exports = module.exports = createApplication;
/**
 * Create an express application.
 *
 * @return {Function}
 * @api public
 */

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是一个实例,它有私有成员对象:request和response,同时继承Event模块中的EventEmitter的原型。

也继承了proto中的方法。执行app.init();源码:

app.init = function init() {
 //给app类/对象赋值三个公用成员
  this.cache = {};
  this.engines = {};
  this.settings = {};
  // 初始化配置
  this.defaultConfiguration();
};

 

在研究defaultConfiguration之前,抽象下app.set函数,它就是给setting赋值的函数,同时针对key = "etag" 和 query parser以及"trust proxy"进行特殊的的设置。

理解了set函数,defaultConfiguration主要设置默认的参数,和注册mount事件。

express源码剖析2

原文:http://www.cnblogs.com/liuyinlei/p/6264677.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!