32-Modulos
directorios que se están usando en el ejemplo:
src/
│
├── cars/
│ ├── cars.controller.ts # Controlador (maneja las rutas HTTP)
│ ├── cars.module.ts # Módulo (registra controlador y servicio)
│ └── cars.service.ts # Servicio (lógica de negocio)
│
├── app.module.ts # Módulo principal de la aplicación
└── main.ts # Punto de entrada (configuración de NestJS)
src/
│
├── cars/
│ ├── cars.controller.ts # Controlador (maneja las rutas HTTP)
│ ├── cars.module.ts # Módulo (registra controlador y servicio)
│ └── cars.service.ts # Servicio (lógica de negocio)
│
├── app.module.ts # Módulo principal de la aplicación
└── main.ts # Punto de entrada (configuración de NestJS)Explicación breve:
cars/: Contiene los archivos específicos del recurso Cars (controlador, módulo y servicio).
app.module.ts: Importa y organiza los módulos de la aplicación (en este caso, CarsModule).
main.ts: Inicia la aplicación y configura el servidor.
Esta estructura sigue las buenas prácticas de NestJS, separando responsabilidades en capas claras.
cars/: Contiene los archivos específicos del recurso Cars (controlador, módulo y servicio).
app.module.ts: Importa y organiza los módulos de la aplicación (en este caso, CarsModule).
main.ts: Inicia la aplicación y configura el servidor.
Módulos en NestJS: La Base de tu Aplicación
Introducción
Cuando comenzamos a explorar NestJS, es normal encontrarnos con una estructura inicial llena de archivos que no siempre entendemos. En mi caso, decidí borrar algunos (como controller y service) para empezar desde cero y explicar cada concepto paso a paso.
Si has hecho lo mismo, ¡no te preocupes! Es mejor construir un proyecto minimalista para entender cada pieza antes de avanzar.
¿Qué son los módulos en NestJS?
Los módulos son bloques fundamentales (Building Blocks) en NestJS. Su función principal es agrupar y organizar funcionalidades específicas de tu aplicación. Por ejemplo:
Un módulo de Autenticación manejaría todo lo relacionado con login, registro y tokens.
Un módulo de Carros gestionaría peticiones, servicios y lógica exclusiva de vehículos.
En pocas palabras, un módulo es un contenedor que reúne controladores, servicios, proveedores y más, manteniendo tu código ordenado y modular.
El Módulo Principal: AppModule
src/
│
├── cars/
│ ├── cars.controller.ts # Controlador (maneja las rutas HTTP)
│ ├── cars.module.ts # Módulo (registra controlador y servicio)
│ └── cars.service.ts # Servicio (lógica de negocio)
│
├── app.module.ts # Módulo principal de la aplicación
└── main.ts # Punto de entrada (configuración de NestJS)Al crear un proyecto nuevo, NestJS genera un módulo raíz (AppModule) en app.module.ts. Este es el punto de entrada de tu aplicación y tiene dos responsabilidades clave:
Importar otros módulos: Por ejemplo, UsersModule, AuthModule, etc.
Definir dependencias globales: Como controladores y servicios principales.
Si borraste archivos iniciales (como yo), verás errores en AppModule porque las referencias a esos archivos ya no existen. ¡Es normal! Limpia esas referencias y deja solo lo esencial:
typescript
import { Module } from '@nestjs/common';
@Module({
imports: [], // Otros módulos que usará tu app
controllers: [], // Controladores (rutas)
providers: [], // Servicios o lógica de negocio
})
export class AppModule {}
El Archivo main.ts: El Punto de Inicio
src/
│
├── cars/
│ ├── cars.controller.ts # Controlador (maneja las rutas HTTP)
│ ├── cars.module.ts # Módulo (registra controlador y servicio)
│ └── cars.service.ts # Servicio (lógica de negocio)
│
├── app.module.ts # Módulo principal de la aplicación
└── main.ts # Punto de entrada (configuración de NestJS)El archivo main.ts es el primer código que ejecuta NestJS. Aquí se crea la aplicación y se especifica el módulo principal (AppModule):
typescript
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000); // Puerto por defecto (cambiable)
}
bootstrap();
NestFactory.create(): Instancia tu aplicación usando AppModule.
app.listen(): Inicia el servidor en el puerto asignado (ej. 3000).
Probando la Aplicación
Al ejecutar npm run start:dev, NestJS inicia el servidor. Si abres http://localhost:3000 en tu navegador o Postman, verás un error 404. ¡Esto es bueno! Significa que:
El servidor está funcionando.
NestJS responde con JSON ante rutas no definidas (comportamiento por defecto).
Conclusión y Próximos Pasos
Los módulos son el corazón de NestJS, y aunque al principio pueden parecer abstractos, su utilidad brilla cuando organizas tu código en funcionalidades independientes.
En el próximo post, crearemos nuestro primer módulo personalizado (¡aparte de AppModule!) y conectaremos rutas, controladores y servicios.
¿Te quedaron dudas? Déjalas en los comentarios. ¡Nos vemos en la siguiente parte! 🚀
Bonus: Recursos Recomendados
Extensión para Chrome: JSON Viewer Pro (para visualizar mejor las respuestas API).
Comentarios
Publicar un comentario