Найти тему
Chris Roylance

Разработка CMS на NodeJS. Часть 4. Выносим обработку параметров приложения в отдельный файл и создание файла конфигурации.

В предыдущей статье мы разобрали, что такое параметры приложения. В этой части мы произведём вынесение данного функционала в отдельный файл, создадим еще один параметр (dev), а также создадим отдельный файл конфигурации который в дальнейшем будет использоваться как источник всей конфигурации сервера из разных мест получения конфигурации (параметры приложения, env-файл, параметры окружения и сервер конфигурации).

И начнём мы с создания новой директории в нашем проекте под название libs. В данной директории будут находиться все основные файлы связанные с сервером, конфигурацией, подключениям к разным базам данным и тд. В данной папке создадим файл args.libs.js, таким образом директория проекта будет выглядит следующим образом:

Директория проекта.
Директория проекта.

Следующим шагом из app.js перенесём импорт пакета minimist в args.libs.js. А также создадим функция и экспортирование данной функции , назовем ее initArgs. Данная функция необходима, что бы начать процесс разбора массива данных полученных после парсинга параметров приложения.

args.libs.js
args.libs.js

После чего создадим файл для работы с конфигурацией, создадим в нем несколько локальных переменных (port, typeStart), функцию initConfig и экспортируем данную функцию. На вход данная функция будет получать object, с параметрами для port и typeStart.

config.lib.js
config.lib.js

В функции initConfig добавим следующий функционал, из параметров объекта configData произведём обновление параметров локальных переменных данного файла. Стоит отметить, что необходимо произвести проверку на наличие параметра, прежде чем мы будем пытаться его изменить.

Функционал initConfig.
Функционал initConfig.

Подготовив инициализацю конфига, теперь в args.lib.js произведем импорт файл config.lib.js. Следующим шагом сделаем обработку параметров, с дальнейшей передачей их в initConfig.

Функция initArgs.
Функция initArgs.

Мы создали инициализацию параметров из командной строки и инициализировали нестандартной конфигурации. Сейчас нам необходимо получить данные параметры через функции. Метод получения данных через функции позволит нам обезопасить данные параметры от изменений в других местах, для изменения параметров в дальнейшем будут сделаны дополнительные функции, в которых будет производиться дополнительная валидации правильности данных. Для задач вывода данных по порту и типу запуска сервера будет созданы две функции showPortServer и showTypeStart.

 Функции showPortServer и showTypeStart config.libs.js
Функции showPortServer и showTypeStart config.libs.js

Теперь мы все подготовили, для того, что бы добавить данный функционал уже к нашему серверу в файле app.js. Но для корректной работы придется вынести создание http-сервера в функцию runApp. Также добавим наши функции showPortServer и showTypeStart по их прямому назначению и на последок в месте создания сервера с информирование, что сервер запушем добавим секцию, которая отвечает за информирование, что сервер запущен в dev режиме.

Функция runApp и файл app.js
Функция runApp и файл app.js

Теперь произведем запуск приложение через команду node. В примере ниже, мы произвели запуск сервера в dev режиме, а также с нестандартным портом 8001.

Пример запуска с параметрами.
Пример запуска с параметрами.

И последним изменением в данной статье будет улучшение файла package.json. В секции scripts в параметре dev добавим параметр dev.

 Добавление параметра dev в package.json
Добавление параметра dev в package.json

Теперь при запуске сервера через pnpm run dev сервер будет всегда запускаться в режиме dev. В следующей статье мы разберем создание лог-файл работы сервера и лог-файл для режима dev.

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