我對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