1)加载express模块
var express = require("express");2)express导出的是一个函数,因此 express()这样写就是调用一个函数
module.exports = require('./lib/express'); exports = module.exports = createApplication; 也就是说:express()是调用一个函数3)app通过mixin继承了application的方法
exports = module.exports = createApplication; var proto = require('./application'); function createApplication() { var app = function(req, res, next) { app.handle(req, res, next); }; mixin(app, EventEmitter.prototype, false); mixin(app, proto, false); // 主要是这行 // expose the prototype that will get set on requests app.request = Object.create(req, { app: { configurable: true, enumerable: true, writable: true, value: app } }) // expose the prototype that will get set on responses app.response = Object.create(res, { app: { configurable: true, enumerable: true, writable: true, value: app } }) app.init(); return app; }4)application.js 封装了http模块
app.listen = function listen() { var server = http.createServer(this); return server.listen.apply(server, arguments); };总体来说:express没有增加功能,只是封装了http模块