Правильный способ организации myapp/маршрутов/*
Используя последние стабильные node.js и express из npm, я создал свой первый экспресс-проект.
Созданное по умолчанию приложение определяет route/index.js, который содержит один маршрут, который отображает представление индекса по умолчанию.
Я сразу же предположил, что могу добавить другие .js файлы в папку маршрутов /, и они будут включены. Это не закончилось. Включены только маршруты /index.js. Добавление дополнительных маршрутов к маршрутам /index.js отлично работает.
Каков правильный способ определения и организации экспресс-маршрутов, следуя структуре, предоставляемой генератором экспресс-проектов?
Ответ, перефразируя статью в DailyJS:
Учитывая следующие маршруты:
app.get('/', function() {});
app.get('/users', function() {});
app.get('/users/:id', function() {});
... Создайте следующие файлы:
routes/
├── index.js
├── main.js
└── users.js
Затем внутри маршрутов /index.js:
require('./main');
require('./users');
Для каждой новой группы связанных маршрутов создайте новый файл в маршрутах/и require() из маршрутов /index.js. Используйте main.js для маршрутов, которые действительно не подходят в других файлах.
Ответы
Ответ 1
Я предпочитаю динамически загружать маршруты вместо того, чтобы вручную добавлять другие, каждый раз, когда вы добавляете новый файл маршрута. Вот что я сейчас использую.
var fs = require('fs');
module.exports = function(app) {
console.log('Loading routes from: ' + app.settings.routePath);
fs.readdirSync(app.settings.routePath).forEach(function(file) {
var route = app.settings.routePath + file.substr(0, file.indexOf('.'));
console.log('Adding route:' + route);
require(route)(app);
});
}
Я вызываю это при загрузке приложения, которое затем требует всех файлов в routePath. Каждый маршрут настраивается следующим образом:
module.exports = function(app) {
app.get('/', function(req, res) {
res.render('index', {
title: 'Express'
});
});
}
Чтобы добавить больше маршрутов, все, что вам нужно сделать, это добавить новый файл в каталог routePath.