Primeros pasos con NestJS: un framework moderno para Node.js
Viktor Kharchenko
14 nov 2023・5 min de lectura
Tabla de contenidos
¿Qué es NestJS?
Módulos y proveedores
Módulos:
Proveedores:
La arquitectura MVC
Modelo:
Vista:
Controlador:
Compatibilidad con TypeScript
Inyección de dependencias
Decoradores
@Controller:
@Get, @Post, @Put, @Delete:
@Param, @Query, @Body:
@Injectable:
Primeros pasos con tu primer proyecto en NestJS
Conclusión
Preguntas frecuentes
Node.js ha ganado una enorme popularidad en los últimos años para crear aplicaciones del lado del servidor gracias a su rendimiento y escalabilidad. Si quieres empezar tu camino con Node.js y buscas un framework robusto y bien organizado, NestJS es una excelente opción. En este artículo te presentamos NestJS y te guiamos por sus fundamentos.
¿Qué es NestJS?
NestJS es un framework progresivo de Node.js diseñado para construir aplicaciones del lado del servidor eficientes, escalables y mantenibles. Combina el poder de Node.js con TypeScript, lo que lo convierte en una opción muy atractiva para desarrolladores que prefieren lenguajes con tipado estático. Veamos los aspectos clave de NestJS:
Módulos y proveedores
Las aplicaciones NestJS se construyen con un enfoque modular. Los módulos y los proveedores (providers) son bloques fundamentales de una aplicación NestJS.
Módulos:
Un módulo es una forma de organizar tu aplicación en partes discretas y reutilizables. Cada módulo encapsula un conjunto de componentes estrechamente relacionados, como controladores, servicios y otros archivos vinculados. Los módulos ayudan a mantener una base de código limpia y ordenada.
Proveedores:
Los proveedores son clases que pueden inyectarse en otros componentes, como controladores u otros servicios. Desempeñan un papel crucial al definir la lógica de negocio de tu aplicación. Se decoran con el decorador @Injectable(), lo que permite inyectarlos en otros componentes que dependan de ellos.
La arquitectura MVC
NestJS sigue el patrón arquitectónico Modelo-Vista-Controlador (MVC), ofreciendo una forma estructurada y organizada de crear aplicaciones. Esta separación de responsabilidades facilita el mantenimiento del código y promueve la escalabilidad.
Modelo:
En NestJS, el Modelo representa los datos y la lógica de negocio de tu aplicación. Define la estructura de tus datos y cómo interactúan con la base de datos. Aquí tienes un ejemplo sencillo de un modelo de usuario en TypeScript:
// user.model.ts
export class User {
id: number;
username: string;
email: string;
// ... other properties and methods
}Vista:
Aunque NestJS se centra principalmente en el backend, puedes crear APIs que actúen como la "vista" para tus aplicaciones frontend. Los endpoints definidos en los controladores funcionan como la interfaz para que tu frontend se comunique con el servidor.
Controlador:
Los controladores reciben las solicitudes entrantes, las procesan invocando servicios y devuelven respuestas. Se encargan de definir las rutas y la lógica de manejo de peticiones. Los decoradores desempeñan un papel clave para definir rutas y vincular controladores con endpoints concretos. Aquí tienes un controlador sencillo en NestJS:
// app.controller.ts
import { Controller, Get } from '@nestjs/common';
@Controller('app')
export class AppController {
@Get()
getHello(): string {
return 'Hello, NestJS!';
}
}Compatibilidad con TypeScript
TypeScript es un superconjunto de JavaScript con tipado estático, y NestJS lo adopta por completo. Esto te permite escribir código limpio y seguro en tipos que detecta errores en tiempo de compilación, mejorando tu flujo de desarrollo.
TypeScript ofrece funcionalidades como interfaces y comprobación de tipos, muy útiles para definir estructuras de datos y contratos entre distintas partes de tu aplicación. Así garantizas que trabajas con datos coherentes y bien definidos en todo tu proyecto.
Inyección de dependencias
La inyección de dependencias es un patrón de diseño que usa NestJS para gestionar dependencias entre componentes y mejorar la capacidad de prueba de tu código. En esencia, consiste en suministrar a un componente (por ejemplo, un controlador u otro servicio) las dependencias necesarias (servicios u objetos) en lugar de que el propio componente las cree. Esto favorece la reutilización del código y la separación de responsabilidades.
En NestJS puedes crear servicios que encapsulen funcionalidades específicas de tu aplicación. Estos servicios pueden inyectarse en controladores u otros servicios, favoreciendo la modularidad del código. Aquí tienes un ejemplo de un servicio y de cómo inyectarlo en un controlador:
// cats.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class CatsService {
private readonly cats: string[] = [];
create(cat: string): void {
this.cats.push(cat);
}
findAll(): string[] {
return this.cats;
}
}
// cats.controller.ts
import { Controller, Post, Get, Body } from '@nestjs/common';
import { CatsService } from './cats.service';
@Controller('cats')
export class CatsController {
constructor(private readonly catsService: CatsService) {}
@Post()
async create(@Body() cat: string) {
this.catsService.create(cat);
}
@Get()
async findAll(): Promise<string[]> {
return this.catsService.findAll();
}
}
En este ejemplo, tenemos un CatsService que encapsula la lógica para gestionar una lista de gatos. Este servicio se inyecta en el CatsController, lo que permite al controlador utilizar la funcionalidad que ofrece el servicio.
Decoradores
Los decoradores son una característica muy potente en NestJS. Permiten definir metadatos y crear diversos decoradores para manejar enrutamiento, validación y otras funciones. Esto simplifica la organización del código y lo hace más legible.
@Controller:
El decorador @Controller se usa para definir una clase de controlador. Especifica la ruta base para todas las rutas definidas dentro del controlador.
@Get, @Post, @Put, @Delete:
Estos decoradores se usan dentro de las clases de controlador para indicar los métodos HTTP y las rutas asociadas a los métodos del controlador. Por ejemplo, @Get() define una ruta GET, y @Post() define una ruta POST.
@Param, @Query, @Body:
Estos decoradores se usan para acceder a los parámetros de ruta, parámetros de consulta y cuerpos de la solicitud dentro de los métodos del controlador. Simplifican la obtención y el procesamiento de datos.
@Injectable:
El decorador @Injectable() se usa para marcar una clase como proveedor o servicio que puede inyectarse en otros componentes, como controladores u otros servicios.
Primeros pasos con tu primer proyecto en NestJS
Vamos paso a paso para iniciar tu proyecto NestJS:
1. Instalación: Instala NestJS globalmente con npm o yarn:
npm install -g @nestjs/cli
# O
yarn global add @nestjs/cli
2. Crea un proyecto nuevo: Usa el CLI de Nest para crear un proyecto NestJS:
nest new project-name
Este comando generará la estructura del proyecto e instalará las dependencias necesarias.
Explora la estructura: Después de crear tu proyecto, navega a la carpeta del mismo. Encontrarás una estructura bien organizada con carpetas para controladores, módulos, servicios y más.
3. Crea tu primer módulo: Vamos a crear un módulo, un controlador y un servicio. Son componentes esenciales en NestJS:
nest generate module module-name // nest g m module-name
nest generate controller controller-name // nest g c controller-name
nest generate service service-name // nest g s service-name
O utiliza un conjunto de atajos
nest g m module-name
nest g c controller-name
nest g s service-nameSustituye module-name, controller-name y service-name por nombres significativos para tu proyecto.
4. Define rutas: En tu controlador, usa decoradores como @Get(), @Post() y otros para definir rutas. Implementa la lógica de negocio en tu servicio.
5. Inicia la aplicación: Ejecuta tu aplicación NestJS con el siguiente comando:
npm run start
# O
yarn startPor defecto, tu aplicación NestJS escuchará en el puerto 3000.
6. Prueba tu API: Abre el navegador o usa herramientas como Postman para probar tus endpoints. Por ejemplo, si tienes una ruta GET definida en tu controlador, puedes acceder a ella en http://localhost:3000/controller-route.
Conclusión
NestJS es un framework potente que simplifica el desarrollo con Node.js, proporcionando una forma estructurada y eficiente de crear aplicaciones del lado del servidor. Tanto si eres nuevo en Node.js como si ya tienes experiencia, NestJS merece la pena. Con los recursos mencionados aquí, estás listo para comenzar tu viaje con NestJS. ¡Feliz codificación!
Preguntas frecuentes
¿Qué es NestJS?
NestJS es un framework progresivo de Node.js para construir aplicaciones del lado del servidor eficientes y escalables.
¿Qué es la arquitectura MVC en NestJS?
MVC separa una app en Modelo, Vista y Controlador, lo que favorece la organización y el mantenimiento del código.
¿Cómo beneficia TypeScript a NestJS?
TypeScript aporta seguridad de tipos, mejora la calidad del código y detecta errores en tiempo de compilación.
¿Qué es la inyección de dependencias en NestJS?
La inyección de dependencias gestiona las dependencias entre componentes y promueve la reutilización y la separación de responsabilidades.
¿Qué son los módulos y proveedores en NestJS?
Los módulos organizan la app en partes, mientras que los proveedores son clases inyectables usadas para definir la lógica de negocio.
¿Cómo creo un nuevo proyecto NestJS?
Usa nest new project-name para generar la estructura de un proyecto con el CLI de Nest.
¿Qué son los decoradores en NestJS?
Los decoradores se usan para definir metadatos y simplificar la organización del código, p. ej., el enrutado con @Get() y @Controller.
¿Cómo inicio mi aplicación NestJS?
Ejecuta npm run start o yarn start; por defecto escucha en el puerto 3000.
¿Cómo pruebo endpoints de API en NestJS?
Usa herramientas como Postman o el navegador accediendo a las URLs de tus endpoints.
¿Puedo crear decoradores personalizados en NestJS?
Sí, puedes crear decoradores personalizados para añadir funcionalidad o metadatos a tu código.
¿Cuál es el papel del decorador @Injectable()?
@Injectable() marca una clase como proveedor, permitiendo que se inyecte en otros componentes.
¿Cómo defino rutas en controladores de NestJS?
Usa decoradores como @Get(), @Post(), etc., dentro de las clases de controlador para definir rutas.
¿NestJS es adecuado tanto para principiantes como para desarrolladores experimentados?
Sí, NestJS es adecuado para todos los niveles, ofreciendo una experiencia de desarrollo estructurada y eficiente.
¿Puedo usar NestJS para crear APIs REST?
Sí, NestJS es una excelente opción para construir APIs REST gracias a sus características de enrutado y decoradores.
¿Qué bases de datos son compatibles con NestJS?
NestJS admite varias bases de datos, como MySQL, PostgreSQL, MongoDB y más, mediante librerías como TypeORM.
¿NestJS es adecuado para aplicaciones en tiempo real?
Sí, puedes usar NestJS para aplicaciones en tiempo real integrando librerías WebSocket como Socket.io.
¿NestJS soporta la arquitectura de microservicios?
Sí, NestJS soporta la arquitectura de microservicios y permite construir sistemas distribuidos.
¿Puedo usar NestJS con un framework frontend como Angular?
Sí, puedes usar NestJS como backend para aplicaciones Angular, con una integración fluida.
¿Existen plugins o extensiones oficiales de NestJS?
Sí, NestJS tiene una comunidad activa y ofrece plugins y extensiones oficiales y de la comunidad.
¿Dónde puedo encontrar documentación y tutoriales de NestJS?
Encontrarás documentación y tutoriales completos en el sitio web oficial de NestJS y en los foros de la comunidad.
Digital Transformation Strategy for Siemens Finance
Cloud-based platform for Siemens Financial Services in Poland


También te puede gustar...

Abstracción en programación
Explora la esencia de la abstracción en programación, analizando su importancia, sus tipos y sus aplicaciones en el mundo real. Desde simplificar sistemas complejos hasta facilitar la colaboración, la abstracción es un pilar del desarrollo de software que moldea la forma en que escribimos código.
Marek Majdak
06 jun 2023・5 min de lectura

Cómo escribir un README
Un archivo README es un componente esencial de cualquier proyecto de software y actúa como una guía completa para usuarios y colaboradores. Presenta el proyecto, ofrece instrucciones de instalación y uso, describe las pautas de contribución e incluye la información de licencia. Un README bien redactado mejora la experiencia de usuario, facilita las contribuciones y aumenta la credibilidad del proyecto. Debe ser claro, conciso y organizado, y estar centrado en las necesidades del público objetivo. Las actualizaciones periódicas aseguran que el README siga siendo relevante y útil. Redactar un README eficaz es una habilidad fundamental para los desarrolladores, pues influye de manera significativa en el éxito y la accesibilidad de sus proyectos.
Marek Majdak
10 nov 2023・5 min de lectura

Introducción a NestJS y a las API REST
Descubre el mundo del desarrollo de APIs RESTful con NestJS, desde el diseño hasta el despliegue de APIs seguras y eficientes. Explora las mejores prácticas y desata tu potencial para crear APIs.
Viktor Kharchenko
21 nov 2023・5 min de lectura

Event Loop de Node.js y herramientas para programación asíncrona
Aprende sobre el event loop de Node.js, la programación asíncrona y cómo optimizar el rendimiento del código con el motor V8.
Viktor Kharchenko
23 nov 2023・5 min de lectura

Alternativas a Nuxt.Js
¿Buscas alternativas a Nuxt.js? Descubre Next.js, Gatsby, Gridsome, Sapper y Angular Universal como potentes opciones para el desarrollo web.
Marek Majdak
08 mar 2023・3 min de lectura

Alternativas a Vue.js - 5 opciones
Descubre alternativas a Vue.js como React.js, Angular, Ember.js, Svelte y Aurelia para crear interfaces de usuario y potenciar el desarrollo web.
Marek Majdak
16 ene 2023・5 min de lectura
Añadido recientemente

Servicios de desarrollo de software financiero
En el software financiero, la fiabilidad, la seguridad y la velocidad no son características, sino condiciones previas para generar confianza. Esta guía cubre los pilares de la ingeniería financiera, el espectro completo de servicios, desde pasarelas de pago hasta sistemas core bancarios, y los stacks tecnológicos idóneos para el procesamiento transaccional de alto rendimiento. Explica estrategias de integración para ecosistemas financieros, los obstáculos de cumplimiento normativo que ralentizan la entrega y los KPIs que conviene seguir tras el lanzamiento. Las tendencias emergentes y los modelos de partnership completan el panorama.
Alexander Stasiak
13 ago 2026・10 min de lectura

Desarrollo de software a medida para seguros
El sector asegurador se rige por normativas y reglas tan específicas y tan dependientes de cada jurisdicción que las plataformas genéricas no las modelan con eficacia. Esta guía explica qué abarca el desarrollo de software de seguros a medida: desde la administración de pólizas y los flujos de gestión de siniestros hasta los motores de tarificación y los portales para clientes. Revisa el stack tecnológico que aporta la fiabilidad que el sector exige, sigue un desarrollo desde la fase de discovery hasta el despliegue y analiza dónde la IA está transformando la suscripción de riesgos. También aborda de forma directa los obstáculos más comunes y el coste real de la inacción.
Alexander Stasiak
11 ago 2026・8 min de lectura

Servicios de outsourcing de programación
El outsourcing de programación ha pasado de ser un mero mecanismo de ahorro de costos a convertirse en una forma de incorporar talento especializado justo cuando la hoja de ruta lo requiere. Esta guía define qué abarcan los servicios de outsourcing de programación, por qué los eligen startups y grandes empresas, y cómo difieren en la práctica los principales modelos de colaboración. También propone un método para evaluar proveedores candidatos y recorre el proceso de entrega, desde la fase de discovery hasta el lanzamiento. Secciones sobre platform engineering, mitigación de riesgos, ROI y tendencias futuras completan el análisis.
Alexander Stasiak
10 ago 2026・8 min de lectura

Servicios de desarrollo de plataformas empresariales
Una plataforma no es lo mismo que una aplicación: debe dar servicio a múltiples equipos, cargas de trabajo y casos de uso a la vez. Esta guía presenta los pilares de la arquitectura moderna de plataformas empresariales y compara los modelos de colaboración que mejor se adaptan al trabajo de plataforma de larga duración. Analiza plataformas verticales por industria, recorre el ciclo de vida desde el descubrimiento hasta el escalado y aborda los desafíos que dificultan la gobernanza de los proyectos de plataforma. La selección del stack, la preparación para el futuro y el caso de negocio de la mentalidad de plataforma completan la guía.
Alexander Stasiak
09 ago 2026・9 min de lectura

Desarrollo de SaaS en 2026
La ingeniería de SaaS es una disciplina aparte; no es simplemente desarrollo web con una suscripción encima. Esta guía explica qué hacen realmente de forma diferente los desarrolladores de SaaS, desde el aislamiento de datos multicliente y la infraestructura de alta disponibilidad hasta la facturación por uso y las optimizaciones de rendimiento críticas para el churn. Cubre las decisiones de stack tecnológico que, sin hacer ruido, determinan tus márgenes a largo plazo, y las habilidades en las que conviene insistir al contratar. Léela antes de encargar trabajo a un equipo o redactar una descripción de puesto.
Alexander Stasiak
08 ago 2026・8 min de lectura

Servicios de desarrollo de aplicaciones SaaS
El éxito o fracaso de un producto SaaS depende de decisiones de arquitectura tomadas mucho antes de alcanzar los primeros mil usuarios. Esta guía cubre los pilares arquitectónicos del SaaS moderno, incluida la estrategia de multicliente, los objetivos de disponibilidad y la infraestructura de suscripciones. Recorre, fase por fase, el ciclo de vida del desarrollo, explica dónde encajan la IA y las integraciones avanzadas, y detalla los verdaderos factores de costo detrás del desarrollo de un SaaS. Las consideraciones específicas por industria y las recomendaciones para prepararse para el futuro ayudan a planificar el escalado en lugar de reaccionar ante él.
Alexander Stasiak
07 ago 2026・9 min de lectura
¿Listo para centralizar tu know-how con IA?
Empieza un nuevo capítulo en la gestión del conocimiento, donde el Asistente de IA se convierte en el pilar central de tu experiencia de soporte digital.
Trabaja con un equipo de confianza para empresas líderes.
Construimos lo que viene después.
Servicios




