2012-05-12 66 views
2

我想寫一個nodejs的路由框架,我需要爲ServerRequest和ServerResponse添加一些輔助方法。我注意到Express已經改變它修改原型修改原型有沒有不好的副作用?

快速路/ response.js

var res = module.exports = { 
    __proto__: http.ServerResponse.prototype 
}; 

res.redirect = function (url) { 
    ... 
} 

,表達/ middlewares.js

expressInit = function(req, res, next) { 
    // ... 
    res.__proto__ = app.response; 
    next() 
} 

但在我的框架,我只是喜歡做的事它很簡單:

http.ServerResponse.prototype.redirect = function(url) { 
    ... 
} 

我不知道是否有什麼我不知道爲什麼表達改變風格o f覆蓋。

回答

0

執行此操作時,Express方式只會修改ServerResponse實例的響應對象。您的方法將全局地將重定向功能添加到由節點進程中的任何服務器創建的每個響應。

如果您在節點進程中運行多個框架和服務器,或者想與其他可能這樣做的人共享您的代碼,這可能是一個問題,因爲另一個框架也可能會添加重定向功能,衝突。一般來說,修改不屬於你自己的對象被認爲是不好的風格。

高速方式確實帶有performance penalty,但推測其它任何方式都會導致性能降低。