Правильный способ организовать myapp / маршруты / * - PullRequest
29 голосов
/ 27 января 2012

Используя последний стабильный node.js и express из npm, я создал свой первый экспресс-проект.

Приложение, созданное по умолчанию, определяет маршруты / index.js, который содержит один маршрут, который отображает индекс по умолчанию.view.

Я сразу предположил, что могу добавить другие файлы .js в маршруты / папку, и они будут включены.Это не сработало.Только маршруты / index.js когда-либо включены.Добавление дополнительных маршрутов в route / 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');

Для каждой новой группы связанных маршрутов создайте новый файл в маршрутах / и потребуйте () его из маршрутов / индекса.js.Используйте main.js для маршрутов, которые не вписываются в другие файлы.

1 Ответ

19 голосов
/ 27 января 2012

Я предпочитаю динамически загружать маршруты вместо необходимости вручную добавлять еще одно требование каждый раз, когда вы добавляете новый файл маршрута. Вот что я сейчас использую.

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...