Найти в Дзене
Chris Roylance

Разработка CMS на NodeJS. Часть 8. Применение паттерна MVC

Продолжаем заниматься разработкой нашей cms. В этой статье мы произведём перенос наших обработчиков маршрутов из файла app.js. Разделение проекта мы будем на основе паттерана MVC (Model-View-Controller). Для удобства работы с данным паттерном, все маршруты выделяются в отдельный файл, в нашем случае это будут main.router.js и install.router.js. В файле app.js остаются только неизменяемая часть адреса, все остальные части адреса как статические, так и динамические (через переменные) хранятся в router файлах. Следует отметить, что для каждого маршрута необходим свой конечный контроллер, в нашем случае это будут файлы main.controller.js и install.controller.js. Бывают случае, когда можно вынести какие-то проверки до нашего основного контроллера, когда такая проверка может использоваться не для одного контроллера, такие функции называются промежуточными обработчиками или middleware. В данной статье мы создадим один такой middleware с названием isInstall.middlewar.js. Сначала создадим дирек

Продолжаем заниматься разработкой нашей cms. В этой статье мы произведём перенос наших обработчиков маршрутов из файла app.js. Разделение проекта мы будем на основе паттерана MVC (Model-View-Controller). Для удобства работы с данным паттерном, все маршруты выделяются в отдельный файл, в нашем случае это будут main.router.js и install.router.js. В файле app.js остаются только неизменяемая часть адреса, все остальные части адреса как статические, так и динамические (через переменные) хранятся в router файлах. Следует отметить, что для каждого маршрута необходим свой конечный контроллер, в нашем случае это будут файлы main.controller.js и install.controller.js. Бывают случае, когда можно вынести какие-то проверки до нашего основного контроллера, когда такая проверка может использоваться не для одного контроллера, такие функции называются промежуточными обработчиками или middleware. В данной статье мы создадим один такой middleware с названием isInstall.middlewar.js.

Сначала создадим директории routers и controllers. В каждой директории создадим несколько файлов main.router.js, install.router.js, main.router.js, install.controller.js.

Структура проекта
Структура проекта

После создания файлов начнем переносить ранее созданные обработчики в контроллеры, начнем с install. Каждый обработчик является функцией, маршрут /install является маршрутом приветствием переду установкой системы, по этой причине была создана функция welcomeInstallGet. В создание имени для контроллеров желательно указывать тип запроса, который данная функция будет выполнять, так как один и тот путь может обрабатываться в формате метода get, так и в формате метода post и так далее.

Функция welcomeInstallGet
Функция welcomeInstallGet

Следующим этапом мы сформируем в файле install.router.js маршрут и метод на основание которого будет в дальнейшем вызываться функция welcomeInstallGet из файла install.controller.js.

Файл install.router.js
Файл install.router.js

После создания файла install.router.js необходимо подключить наш файл в runApp.

Подключение файла install.router.js в runApp
Подключение файла install.router.js в runApp

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

А сейчас мы произведём те же манипуляции, но уже с обработчиком главной страницы. Но сразу стоит отметить, проверку на состояние установки мы с вами выносим в промежуточный обработчик, по этой причине в контроллер отрисовки главной страницы пока что перейдёт только одна строчка, отвечающая за ответ клиенту, функция в которую мы перенесём ответ от клиента будет называться homeGet.

Функция homeGet
Функция homeGet

Следующим этапом будет создание промежуточного обработчика, в который мы как раз и выносим проверку нашего значения из confogLib.

Файл isInstall.middleware.js
Файл isInstall.middleware.js

А теперь соединим все main.router.js

Файл main.router.js
Файл main.router.js

После того, как мы произвели изменения в структуре системы разделив все по файлам, давайте проверим как у нас все работает, а для этого запускаем проект и переходим по ссылке http://localhost:8000

 Пример работы системы
Пример работы системы

Как видите, при переходе на главную страницу, нас автоматически переносит перенаправляет на страницу http://localhost:8000/install показывая, что все работает так как надо.В ходе данной статьи мы с вами разделили проект на основание паттерна MVC. В следующей статье мы приступим к реализации страницы установки, для этого воспользуемся пакетом pug.js для генерации страниц, а также пакетом bootstrap.

Подписывайтесь на наш телеграм канал (https://t.me/rebeltechru), в нем вы можете найти статьи по разработке и сами проекты.