为什么引用express, var app=express(); 最后有个()
发布网友
发布时间:2022-04-28 14:05
我来回答
共4个回答
热心网友
时间:2022-06-18 22:38
可分析源码所得:
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port);
});
下面将分析上述例子中出现的几个API:
var app = express();
打开node_moles目录找到依赖的源码文件:./express/lib/express.js.该文件导出函数createApplication.
express()即调用了createApplication()函数,app变量是createApplication函数的返回值。
下面是createApplication函数的构造函数:
function createApplication() {
//创建app对象
var app = function(req, res, next) {
app.handle(req, res, next);
};
//继承node的事件对象
mixin(app, EventEmitter.prototype, false);
//继承./application对象
mixin(app, proto, false);
//app.request和response继承node原生的request和response对象
app.request = { __proto__: req, app: app };
app.response = { __proto__: res, app: app };
//初始化app对象
app.init();
return app;
}
app.init()方法调用的是继承自./application.js的方法。
下面是application.js中的init方法:
app.init = function init() {
this.cache = {};
this.engines = {};
this.settings = {};
this.defaultConfiguration();
};
所以express()本质上就是调用了createApplication()方法,返回了一个express对象
express()分析结束。
热心网友
时间:2022-06-18 22:39
函数标示,告诉机器express不是个普通变量。
热心网友
时间:2022-06-18 22:39
创建一个express实例,这个实例就叫app
热心网友
时间:2022-06-18 22:40
需要执行!追问可否详细解释下,因为引入nodejs引入http模块没这样写没()