Подтвердить что ты не робот

Правильный способ организации 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 для маршрутов, которые действительно не подходят в других файлах.

4b9b3361

Ответ 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.