В чем разница между "express.Router" и маршрутизацией с помощью "app.get"?

У меня есть приложение со следующим кодом для маршрутизации:

var router = express.Router(); 
router.post('/routepath', function(req, res) {});

Теперь мне нужно поместить код маршрутизации в разные файлы, поэтому я попытался использовать этот подход, но он работает не, потому что вместо этого express.Router() он использует:

app.post("/routepath", function (req, res) {});

Как я могу поместить маршрутизацию в разные файлы с помощью express.Router()?

Почему app.get, app.post, app.delete и т.д. не работают в app.js после использования express.Router() в них?

Ответ 1

Вот простой пример:

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

router.get('/', function(req, res) {
    res.send('Hello from the custom router!');
});

module.exports = router;

// main.js
var app = require('express')();

app.use('/routepath', require('./myroutes'));

app.get('/', function(req, res) {
    res.send('Hello from the root path!');
});

Здесь app.use() монтирует экземпляр Router в /routepath, так что любые маршруты, добавленные в экземпляр Router, будут относиться к /routepath.