Skip to main content

Що таке модуль в NestJS?

Модуль (Module) в NestJS - це фундаментальний будівельний блок застосунку, який групує логічно пов'язані частини коду: контролери, сервіси, провайдери та інші модулі. Він допомагає структурувати проєкт, зробити код модульним, перевикористовуваним і легко підтримуваним.

Основна ідея модуля

Модуль - це клас із декоратором @Module(), який повідомляє NestJS:

  • які компоненти (контролери, сервіси, провайдери) належать цьому модулю;
  • які залежності він імпортує з інших модулів;
  • які сутності він експортує назовні.

Приклад простого модуля

javascript
import { Module } from '@nestjs/common'; import { UsersController } from './users.controller'; import { UsersService } from './users.service'; @Module({ imports: [], // Імпорт інших модулів controllers: [UsersController], // Контролери (обробляють запити) providers: [UsersService], // Сервіси, Guards, Pipes тощо exports: [UsersService], // Що доступно іншим модулям }) export class UsersModule {}

Цей модуль об'єднує UsersController і UsersService в одну логічну область - роботу з користувачами.

Що міститься в модулі

ПолеПризначення
importsСписок інших модулів, чиї експортовані провайдери потрібні цьому модулю.
controllersКласи, які обробляють вхідні запити (наприклад, HTTP).
providersКласи, доступні через DI (сервіси, гварди, пайпи, резолвери, репозиторії тощо).
exportsТе, що цей модуль "віддає назовні" для використання іншими модулями.

Навіщо потрібні модулі

  1. Організація коду Проєкт ділиться на незалежні області: UsersModule, AuthModule, ProductsModule тощо.
  2. Повторне використання Один і той самий модуль можна імпортувати в кількох місцях.
  3. Інкапсуляція Провайдери за замовчуванням доступні лише всередині свого модуля, поки ти явно не експортуєш їх.
  4. Масштабованість Великі проєкти можна легко розширювати, просто додаючи нові модулі.

Головний модуль застосунку (AppModule)

Кожен NestJS-застосунок обов'язково містить кореневий модуль - AppModule. Він підключає всі інші модулі:

javascript
import { Module } from '@nestjs/common'; import { UsersModule } from './users/users.module'; import { AuthModule } from './auth/auth.module'; @Module({ imports: [UsersModule, AuthModule], }) export class AppModule {}

Приклад структури проєкту

javascript
src/ ├── app.module.ts ← кореневий модуль ├── users/ │ ├── users.module.ts ← модуль користувачів │ ├── users.controller.ts │ └── users.service.ts ├── auth/ │ ├── auth.module.ts ← модуль авторизації │ ├── auth.controller.ts │ └── auth.service.ts

Підсумок

Ключова ідеяОпис
Модуль - це контейнер для кодуВін об'єднує все, що стосується однієї функціональності
Кожен застосунок Nest складається з модулівКореневий AppModule підключає решту
Інкапсуляція й перевикористанняМодуль приховує внутрішні деталі й надає інтерфейс через exports

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.