Для большинства приложений Express стандартным является создание одного файла, содержащего все ваши маршруты. Потребуйте этот файл в своем app.js и включите инструкцию app.use, нацеленную на любой запрос на «/’ и , все готово.
const express = require('express'); const routes = require('./routes/index'); const app = express(); app.use('/', routes);
Этот подход работает для большинства проектов, но может привести к длинному списку маршрутов. Каждый бросается один за другим и каждый следует одной и той же конструкции:
router.get('/', ....); router.get('/bears/habitats', ...); router.post('/panthers', ...) router.get('/lions', ...); ...
Более модульный подход состоит в том, чтобы отделить инструкцию app.use от app.js.
Скорее, чем:
app.use('/', routes);
где routes - это экспортированный объект всех ваших маршрутов, экспортируйте функцию, которая принимает Express app в качестве параметра. Затем вы можете потребовать функцию, передать ее app и позволить этой функции реализовать все операторы app.use.
Как это выглядит на практике?
Создайте файл индекса маршрутизатора, который вызывает инструкцию app.use для каждой части логики URL вашего приложения.
// routes/index.js const api = require('./api'); module.exports = function(app) { app.use('/api', api); };
Где api.js выглядит так:
// routes/api.js const express = require('express'); const apiRoutes = express.Router(); apiRoutes.get('/',...); apiRoutes.get('/Jaguars',...); module.exports = apiRoutes;
Затем в app.js укажите в маршруте index.js передачу app в качестве параметра возвращаемой функции:
// app.js require('./routes/index')(app);
При этом любые запросы к / api могут обрабатываться в специальном файле маршрутизации api, а любые запросы к другой группе конечных точек могут быть изолированы в их собственном файле.