对于每个中间件,Express都会传递一个res
和一个req
对象。这些对象分别扩展了来自http.ServerResponse
和http.ClientRequest
的本机对象。我想知道是否可以覆盖或扩展响应对象的方法。
例如,我想用一个名为customRender的自定义方法来扩展res
,而不是res.render('home', jsonData);
,并像这样使用它:res.customRender()
。
我不会纠结于某个特定的问题或任何事情。我只想学习如何扩展本机对象,或者像本例一样,扩展来自Node.js中第三方模块的对象
发布于 2018-12-17 20:23:15
作为freakish answered,您可以将方法添加到原型中。但是,它不能访问所创建对象的其他成员。如果您希望拥有该访问权限,则需要更进一步。这是一个完整的示例:
const express = require('express');
const myExpress = Object.create(express().response, {
data: {
value: function(data) {
return this.status(200).json({status: true, data: data});
},
},
message: {
value: function(msg) {
return this.status(200).json({status: true, message: msg});
},
},
});
这样,您就可以像这样创建express对象:
const app = express();
app.response = Object.create(myExpress);
从响应对象中,您将能够直接调用message
和data
函数。
https://stackoverflow.com/questions/18304436
复制相似问题