通過require('express')會expose一個函數,暫時現成它爲express,儘量保持和require裏面的參數名一樣或者相式。
接着通過app = express(),我們可以實例化一個對象,它其實類似http.Server的實例化server對象
下面代碼,可以分析,app可以作爲一個createServer方法的回調函數,或者request監聽事件的回調函數
//express源碼
var app = function(req, res, next) {
app.handle(req, res, next);
};
因此,在進行服務器創建時,我們可以:
let http = require('http');
let express = require('express');
let app = express();
http.createServer(app).listen(3000);
另外一種方法:
通過分析application.js文件,可以瞭解在app對象上有一個listen方法,實現監聽事件,本質還是通過http模塊,先通過
createServer創建一個server對象(http.Server),app(this指向當前express())作爲回調函數,通過server.listen.apply(server, arguments)傳入
app.listen的參數傳入server.listen中。本質上還是利用http的createServer方法。
//監聽事件源碼
app.listen = function listen() {
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
因此,另外一種創建服務器方法:
let express = require('express');
let app = express();