Перейти к основному содержимому

Типы модулей

Когда вы создаете модуль 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.