Типы модулей
Когда вы создаете модуль NestJS, все существующие модули импортируются в одну опцию imports главного модуля приложения.
Когда все модули находятся в едином списке, мы не можем сразу определить, какой модуль является бизнес-модулем, а какой несет общую логику для логирования.
В NestJS-mod есть не одна общая опция для импорта модулей, а несколько.
Это разделение модулей может помочь при построении отчета об инфраструктуре, а также сразу отображает определенный общий смысл модуля в рамках всего приложения, что помогает быстро войти в контекст самой логики, для которой этот модуль был предназначен.
import { bootstrapNestApplication } from "@nestjs-mod/common";
bootstrapNestApplication({
modules: {
system: [],
core: [],
feature: [],
integrations: [],
infrastructure: [],
},
});
Порядок обработки модулей: 1) system, 2) core, 3) feature, 4) integrations, 5) infrastructure
Системные модули (System)
Модули для всего приложения.
Примеры: запуск приложения NestJS, запуск микросервисов и т.д. Совместимо только с NestJS-mod.
Core модули
Модули с типом "Core" нужны для работы функциональных модулей и модулей интеграции.
Примеры: главный модуль с подключением к базе данных, главный модуль с подключением к aws и т.д. Совместимо с NestJS и NestJS-mod.
Feature модули
Функциональные ("feature") модули с бизнес-логикой приложения.
Совместимо с NestJS и NestJS-mod.
Integration модули
"Integration" модули для организации связи между различными функциональными, системными или core модулями.
Пример: после создания пользователя в модуле
UsersModule, тип модуля которого "Feature", нужно отправить ему письмо из модуляNotificationsModuleс типом "Core", при этом модуль пользователя не имеет информации о транспорте и способе отправки, а также явной связи с модулем уведомлений, модуль пользователя просто имеет метод в конфигурацииafterCreateUser, реализация которого будет уже передана из определенного интеграционного модуля. Совместимо с NestJS и NestJS-mod.
Infrastructure модули
Модули для создания файлов конфигурации для различных сервисов, внешних по отношению к приложению. Эти модули исключаются из окончательного списка модулей, которые будут загружены в NestJS.
Примеры: файл
docker-composeдля поднятия базы данных, файл конфигурацииgitlabдля развертывания приложения. Совместимо только с NestJS-mod.