我对SPA网站的后端设计有这个想法。我会实现它,以便以“/ api /”开头的路由仅返回JSON中的相关数据。所有其他路线将导致整页加载。在express.js中修改res对象
现在我的想法是做中间件,因为这样:
app.use(function(req, res, next()){
if(req.path.split("/")[0]=="api"){
res.send = res.json;
//or other custom response-function, I see many possibilities here!
}else{
...
}
});
app.use(routes);
现在,我的问题是,这是否修改资源在全球范围对象,或只为当前请求(RES的这种情况下) ?我的理解只是当前的一个被修改,并且据我所知这是真的,但节点非常快,所以它很难单独测试(只能在毫秒内刷新很多标签!)任何人都知道当然?
编辑:很多回答我的问题的人问我为什么要这样做。关键是要抽象服务器为加载前端的客户端以及需要整页的客户端提出的请求。我也在考虑使用这种相同的方法添加路径来加载部分模板的可能性。通过修改res.send我的控制器可能会担心获取数据并发送它,res.send已经知道是否需要涉及某些渲染。虽然res.send虽然真的有用,但我可能会修改res以res.answer或类似的方式(使得更少混淆!)
我认为这是全球性的。如果你不确定它,你可以把一个日志(前console.log或其他),并检查它。 – 2015-03-19 03:41:44
'res'是一种对象类型的一个实例。你只修改那个实例。 node.js可以很容易地使用自己的'res'对象一次播放多个请求/响应。 – jfriend00 2015-03-19 03:49:40
你可以完全做到这一点 - 它不像你修改原型。但真正的问题是为什么你想这样做。特别是如果你将一个对象或数组传递给res.send,它会自动运行,就像你调用res.json一样。阅读文档。 http://expressjs.com/4x/api.html#res.send – 2015-03-19 04:48:31