1

我想修补 expressres.json()并将res.render()对象与闪烁和错误结合起来。所以我可以这样做:

res.flash('error', 'You suck!');
res.formError('moneyInput', 'Give me more!');
... later
res.json({success: false});

它会返回: {flashes: [{error: 'You suck!'}], errors: [{'moneyInput': 'Give me more!'}], content: {success: false}}

并且同样res.render会将这些东西粘贴到模板的本地人中。

所以现在 - 猴子补丁似乎是最好的课程。我计划在中间件中对其进行猴子补丁。

问题:
有没有更好的选择?
有没有其他人这样做过?
有什么陷阱?(除了每次升级快递时都必须更新我的代码)

4

1 回答 1

0

一种替代方法是将待处理的数据存储在响应对象上,但不对其中的方法进行猴子修补:

function flash (res, type, message) { //stick this in a shared module
    res._flash = {};
    res._flash[type] = message;
    return res;
}
//in some handler function
flash(res, 'error', 'You suck!');

但是,对于少数真正有用的功能,我会说,只需对其进行修补并承担风险。res.body例如,在使用bodyParser中间件时,将数据字段动态添加到响应中已经是惯例。如果您想对名称冲突保持偏执,只需添加一个前缀,如res._mkFlash.

于 2013-04-05T07:17:40.000 回答