2017-03-26 173 views
0
//app.js 
var app = require('express')(); 
app.use('/test', require('./test')); 



//test/index.js 
var router = require('express').Router(); 

router.get('/test', function (req, res) { 
    res.status(200).send("success"); 
}); 
module.exports = routes; 

爲什麼路徑需要在app.use和router.get中指定?如果我只是簡單地把app.use('/', require('./test'));,它似乎仍然工作得很好。爲什麼在app.use中指定路徑?

回答

1

指定​​您的處理程序方法將處理以/ test結尾的任何請求。取決於路由器的位置是use()

app.use(withPath,[回調...]

那掛載中間件功能tests在speficied路徑/test 所以你的中間件test將執行的時候,基本要求URL路徑匹配。

1

如果更改此:

app.use('/test', require('./test')); 

爲此:

app.use('/', require('./test')); 

那麼你將有相同的功能使用由./test模塊上與/test時間等,你將體驗到這一切的路線導出的中間件將致力於同前,但中間件會也處理其他不一定以/test開頭的路線,這取決於它的作用和運作方式,可能會或可能不是你想要的。

通過在app.use()調用中使用某個路徑,可以限制僅加載到該路徑的中間件。當您使用/時,就像說「每條路徑」一樣,因爲每條路徑都以斜槓開始 - 即使不包含斜槓的URL所請求的路徑仍然以斜槓請求,例如使用了斜槓。與HTTP/1.1類似:

GET/HTTP/1.1 
Host: localhost