对于只需要在单个请求期间可用的数据,应该在哪里存储?我在req和res对象上创建新属性,所以我不必将该数据从函数传递给函数.
req.myNewValue = 'just for this request'
Run Code Online (Sandbox Code Playgroud)
过程对象是一个选项吗?或者它是否在所有请求中全局共享?
pxw*_*ise 17
在Express 4中,最佳做法是在res.locals上存储请求级别变量.
包含作用于请求的响应局部变量的对象,因此仅对在请求/响应周期(如果有)期间呈现的视图可用.否则,此属性与app.locals相同.
此属性对于公开请求级别信息(例如请求路径名,经过身份验证的用户,用户设置等)非常有用.
app.use(function(req, res, next){
res.locals.user = req.user;
res.locals.authenticated = ! req.user.anonymous;
next();
});
Run Code Online (Sandbox Code Playgroud)
该process
对象由所有请求共享,不应按请求使用.
fre*_*ish 14
如果你在谈论像这里传递的变量:
http.createServer(function (req, res) {
req.myNewValue = 'just for this request';
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
Run Code Online (Sandbox Code Playgroud)
那么你正在做的事情真是太好了.req
存储请求数据,您可以根据需要进行修改.如果你使用像Express这样的框架,那么它也应该没问题(请记住,你可以覆盖req
对象的一些内置属性).
如果你通过"过程对象"引用全局变量process
,那么绝对不是.这里的数据是全局的,根本不应该修改.
归档时间: |
|
查看次数: |
9899 次 |
最近记录: |