Пример, которому вы следуете, взят из этой записи в блоге Тимом Робертсом.Пример контроллера демонстрирует, что это такое:
var mongoose = require('mongoose')
var Video = require('../models/user');
module.exports.controller = function(app) {
app.get('/signup', function(req, res) {
// any logic goes here
res.render('users/signup')
});
app.get('/login', function(req, res) {
// any logic goes here
res.render('users/login')
});
}
Если вы сохраните этот пример контроллера в папке controllers
в папке whatever.js
, все, что он делает, это экспортирует функцию controller
, которая принимаетЭкспресс-приложение в качестве аргумента и добавляет пару пользовательских маршрутов в приложение.
Затем основной модуль сканирует все такие файлы в папке controllers
и сначала использует функцию require
для загрузки модуля.:
const route = require('./controllers/' + file);
После строки выше, route
содержит ссылку на модуль, который содержит эту controller
функцию.
Этот
route.controller(app);
просто вызываетфункция, экспортированная из модуля, передавая глобальный app
в качестве аргумента.
Таким образом, вы можете легко расширить свое приложение, просто создав отдельные модули .js
в папке controllers
, которые следуют тому же соглашению(экспорт функции controller
).