Создайте шаблон MVC в Express и замените папку маршрутов на папку контроллеров - PullRequest
0 голосов
/ 11 июня 2018

Новый экспресс.Хотите реализовать шаблон MVC в Express и заменить папку маршрутов на папку контроллера.Я нашел этот код, который на самом деле работает, но я не совсем понимаю, что он делает:

var fs = require('file-system');    

fs.readdirSync('controllers').forEach(function (file) {
      if(file.substr(-3) == '.js') {
        const route = require('./controllers/' + file);
        route.controller(app);
      }
    })

readdirSync читает содержимое папки 'controller' и для каждого найденного файла он делает что-то, чтоЯ не понимаю:

if (file.substr (-3) == '.js') // проверяет, является ли конец файла .js, но почему?

const route = require ('./ controllers /' + file); // не понимаю этого

route.controller (app); // не понимаю этого

Не могли бы вы помочь с этим?

Спасибо.

1 Ответ

0 голосов
/ 11 июня 2018

Пример, которому вы следуете, взят из этой записи в блоге Тимом Робертсом.Пример контроллера демонстрирует, что это такое:

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).

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