安全地附加到req参数



在express中,当我使用路由中间件时,可以附加到请求对象吗?或者这是一种糟糕的模式?替代方案?谢谢

app.get('/', getLayout, function(req, res){
    if(req.layout == 'simple') ...render simple layout...
    else ...render full layout...
});

其中

getLayout = function(req, res, next){
    req.layout = (req.params.blah == 'blah') ? 'layout_simple' : 'layout_full';
    next();
}

我不明白你为什么不应该这样做。

我经常这样做。

我的印象是这就是中间件通常所做的。

从快递文件:http://expressjs.com/guide.html#route-中间件

他们在中间件中将req.user设置为当前用户。

我同意j_mcnally的观点,只要你不过分,这是一个很好的模式。具体来说,我将大多数与响应更密切相关的内容附加到res对象。这可能是布局信息、HTML片段、响应的中间jsdom-env表示等。对于req,附加查询字符串或请求主体信息的表示是有意义的。这可能是输入参数、解析的搜索查询、当前用户对象等。

express文档建议这在某种程度上是一种标准做法:

http://expressjs.com/guide.html#route-中间件

但由于V8的工作方式,它会显著影响性能:

http://blog.tojicode.com/2012/03/javascript-memory-optimization-and.html

http://www.scirra.com/blog/76/how-to-write-low-garbage-real-time-javascript

最新更新