imagen en neon de la figura de un gato con luces de neon azules

Conoces la funcionalidad de @Module() de nest

Cuando exploramos los archivos de nest,  uno de los primeros que podemos visualizar es @Module() pero que es: 

Es un decorador de clase que se utiliza para proporcionar metadatos que Nest emplea para organizar la estructura de la aplicación. Cada aplicación de Nest tiene al menos un módulo raíz (root module), que es el punto de partida que Nest usa para construir el "grafo de dependencias".

Entonces podemos decir que es el punto de partida para recibir los recursos de nuestro módulo.

Esta es su anatomía y los elementos que recibe:

controllers: Son las clases que manejan las peticiones HTTP.

@Controller('users')
export class UsersController {
  @Get()
  findAll() {
  return 'Lista de usuarios';
 }
}

Providers: Son clases que contienen la lógica del negocio. Es acá donde creamos funciones que pueden mapear datos, conectar con BBDD y todo lo que tiene que ver con la lógica del negocio.

@Injectable()
export class UsersService {
  findAll() {
  return ['Juan', 'Ana'];
  }
}

imports: Permite usar otros módulos dentro del módulo actual. dado que tal ves tienes ya implementado un recurso que desees usar en este módulo como para escribir nuevamente una funcionalidad ya creada. 

imports: [DatabaseModule]

 export: Para poder exportar funcionalidades usadas en el módulo actual. 

exports: [UsersService]

Gracias a esto cobra sentido el porque podemos hacer esto: 

constructor(private usersService: UsersService) {}

...en resumen, 

  • Organiza la aplicación en bloques.

  • Agrupa controllers y servicios relacionados.

  • Define qué se usa internamente y qué se comparte.

  • Permite que Nest conecte todo automáticamente.

Si vienes de Express, piensa en un módulo como una versión estructurada y ordenada de tus rutas + lógica separadas correctamente.