Это, возможно, самый удивительный вопрос / ответ (ы) о переполнении стека за всю историю.Я люблю решения Сэма / Брэда выше.Думал, что я буду взаимодействовать с асинхронной версией, которую я реализовал:
function loadRoutes(folder){
if (!folder){
folder = __dirname + '/routes/';
}
fs.readdir(folder, function(err, files){
var l = files.length;
for (var i = 0; i < l; i++){
var file = files[i];
fs.stat(file, function(err, stat){
if (stat && stat.isDirectory()){
loadRoutes(folder + '/' + file + '/');
} else {
var dot = file.lastIndexOf('.');
if (file.substr(dot + 1) === 'js'){
var name = file.substr(0, dot);
// I'm also passing argv here (from optimist)
// so that I can easily enable debugging for all
// routes.
require(folder + name)(app, argv);
}
}
});
}
});
}
Моя структура каталогов немного отличается.Обычно я определяю маршруты в app.js (в корневом каталоге проекта) с помощью require
-ing './routes'
.Следовательно, я пропускаю проверку по index.js
, потому что я хочу, чтобы включил и эту.
РЕДАКТИРОВАТЬ: Вы также можете поместить это в функцию и вызвать ее рекурсивноотредактировал пример, чтобы показать это), если вы хотите вложить свои маршруты в папки произвольной глубины.