1 回答

TA貢獻2051條經驗 獲得超10個贊
區別看下面的例子:
app.js
var express = require('express'),
dogs = require('./routes/dogs'),
cats = require('./routes/cats'),
birds = require('./routes/birds');
var app = express();
app.use('/dogs', dogs);
app.use('/cats', cats);
app.use('/birds', birds);
app.listen(3000);
dogs.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
res.send('GET handler for /dogs route.');
});
router.post('/', function(req, res) {
res.send('POST handler for /dogs route.');
});
module.exports = router;
在 app.js 中調用 express() 時,返回一個 app 對象。
app 對象可以看作創建了一個 Express 應用程序。
而當 express.Router() 被調用時,返回稍微不同的“迷你應用”。
“迷你應用程序”背后的想法是,應用程序中的不同路線可能變得相當復雜,你可以從將該邏輯移動到單獨的文件中獲益。
在上面這個簡單的例子中,/dogs 路由的邏輯已經被移動到自己的文件中,所以它的 GET 和 POST 處理程序不會混亂 app.js。
現在,你可以獨立地處理對 /dog 的任何請求的邏輯,而不用擔心它將如何影響貓 /birds。
如果你具有與所有三條路由相關的邏輯(Express 中稱為中間件),則可以將其放在 app.use(...) 調用上方的 app.js 中。
如果你有邏輯僅與其中一條路線(/dog)相關,那么你只將它放在該路由的文件中。
以上回答,來源于Stack Overflow
Differences between express.Router and app.get?
共同學習,給贊更好~~~
至于什么時候使用,其實上面的例子已經解釋了。
如果代碼非常簡單,完全可以 app.get('/',....),如果路由比較復雜,使用 express.Router() 更合適。
添加回答
舉報