2012-07-18 70 views
1

已經開始與快遞最近我遇到下列問題跌跌撞撞工作:其他參數傳遞路線(expressjs)

我的路由的整個邏輯在不同的文件中,然後由需要的手段包括定義(ROUTE_NAME )。

app.get('/', routes.home) etc. 

上面一行意味着routes.home是調用的參數REQ功能,水庫&下一個:相應的GET/POST比賽將按照如下處理。

我有一堆存儲在utils對象中的實用函數,我希望每條路線都可以訪問。到現在爲止,我已經解決了如下問題:

var utils = ... 

app.get('/', function (req, res, next) { 
    routes.home(req, res, next, utils); 
}); 

有沒有辦法告訴表達,它應該通過utils的對象作爲參數傳遞給每一個路由或一般較好地解決了我的問題?

+1

標準的做法是讓你的路由文件自己做需要的工具。有沒有理由不這樣做? – JohnnyHK 2012-07-18 12:32:53

回答

2

我同意JohnnyHK。還有,爲什麼你需要通過res和req兩次?爲什麼在你的應用程序文件無法做到這一點:

app.get('/', routes.home); 

然後在您需要的文件是這樣的:

var utils = require('utils') 
exports.home = function(req, res){ 
    //code 
} 
+0

我選擇這種方式的原因是utils包含某些模塊(例如存儲),其中只有一個實例應該可用。如果不是因爲我會堅持你上面描述的程序。 – 2012-07-18 23:19:20

+0

節點文檔:模塊在第一次加載後被緩存。這意味着(除其他外)每次調用require('foo')將得到完全相同的對象返回,如果它將解析爲相同的文件。 – jabbermonkey 2012-07-19 14:02:28

+1

並且:如果您想讓模塊多次執行代碼,則導出一個函數並調用該函數。 – jabbermonkey 2012-07-19 14:03:23

0

感謝所有的答案。通過在我想要的utils模塊的路由上調用「init(utils)」函數,我找到了解決方案。