Node.js 节点+;Express:req和res变量如何具有全局作用域而不引起冲突?

Node.js 节点+;Express:req和res变量如何具有全局作用域而不引起冲突?,node.js,express,global-variables,Node.js,Express,Global Variables,似乎req和res变量在Express中具有全局范围(例如,无论函数范围如何,这些变量都可以访问)。如何在不造成同时客户端之间冲突的情况下实现这一点?它们没有全局作用域 路线 该路由为每个路由使用一个处理程序函数。该路由通过req和res对象传递 app.get('/my-route', myHandler); 处理者 处理程序接收并使用这些对象 exports.myHandler = function(req, res) { res.send("Hello world"); );

似乎
req
res
变量在Express中具有全局范围(例如,无论函数范围如何,这些变量都可以访问)。如何在不造成同时客户端之间冲突的情况下实现这一点?

它们没有全局作用域

路线 该路由为每个路由使用一个处理程序函数。该路由通过
req
res
对象传递

app.get('/my-route', myHandler);
处理者 处理程序接收并使用这些对象

exports.myHandler = function(req, res) {
    res.send("Hello world");
);
闭包 当您进行数据库调用(或任何其他io绑定调用)时,您会将回调传递给它。
req
res
对象作为闭包存在于该回调中

exports.myHandler = function(req, res) {
  var weekday = req.query.weekday || "today";
  db.getWeather(weekday, function(err, result) {
    // `res` here is a closure
    if(err) { res.send(500,"Server Error"); return; }
    res.send(result);
  });
};
有关闭包的更多信息: