我正在从头开始在 Node.js 中构建一个 Web 服务器(没有快递,没有猫鼬)。我的代码(非常简化)看起来像这样:
var app = {};
app.config = require('./config');
app.http = require('http');
app.router = require('./router');
app.mongoDb = require('mongodb');
app.mongoClient = app.mongoDb.MongoClient;
app.mongoClient.connect(
'mongodb://'
+ app.config.db.server + ':'
+ app.config.db.port + '/'
+ app.config.db.catalog, function(err, db) {
if (!err) {
app.db = db;
app.httpServer = app.http.createServer();
app.httpServer.on('request', function(req, response) {
req.app = app;
req.response = response;
req.value = {};
app.router.main(req);
});
app.httpServer.listen(app.config.port);
}
});
基本上,我在一个名为app
. 我连接数据库并创建一个 http 服务器,然后我将其放入事件处理程序app
的请求对象 ( ) 中。req
我还将响应对象 ( response
) 和空值对象 ( value
) 放在req
.
所以现在,如果我用 调用路由器函数app.router.main(req)
,我只需要传递req
给它,我仍然可以访问所有全局内容以及请求、响应和与请求相关的任何其他值。它似乎工作正常。
我对这种方法的问题是:
- 当我需要它们时,是否有更简单的方法来获取我的所有对象?
- 物体在各处的传递
req
会对性能产生显着的不利影响吗? - 这会导致与数据库连接、请求、响应或我的应用程序的任何其他部分相关的不可预见的问题吗?