现在,我通过中间件来扩展请求对象:
function(req, res, next) {
res.customMethod = function() {
}
next();
}
但是我认为由于对res.prototype名称空间的污染,这是不正确的。有谁知道更好的方法,或者expressjs4已经对此有任何方法?
您的方法几乎是完美的,但正如您所说的那样,最好避免污染res名称空间:要实现您的目标,您可以使用为此设计的res.locals属性。接下来是一个片段,我将应用程序的翻译程序附加到响应对象上。
app.use(function(req, res, next){
function Translator (lang) {
this.lang = lang ? lang : 'it';
this.translate = function (sentence) {
var d = dictionaries.get;
var translation = d[this.lang] ? d[this.lang][sentence] : d['it'][sentence];
return translation ? translation : sentence;
};
this.setLang = function (l) {
this.lang = l;
};
};
res.locals.translator = new Translator();
next();
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句