Introducción a NestJS
\n\nNestJS (Nest) es un framework progresivo para crear aplicaciones backend eficientes, escalables y confiables en Node.js. Utiliza TypeScript como lenguaje principal y está inspirado en la arquitectura de Angular. NestJS proporciona una arquitectura de aplicación lista que ayuda a los desarrolladores a crear código bien estructurado, testeable y mantenible.
\n\nEl objetivo principal de NestJS es resolver el problema de la falta de una arquitectura clara en el ecosistema de Node.js. A diferencia de Express o Fastify, que son minimalistas y no imponen una estructura, NestJS ofrece abstracciones listas: módulos, controladores, servicios, proveedores y middleware. Esto es especialmente útil para grandes proyectos empresariales donde la previsibilidad y la estandarización del código son importantes.
\n\nNestJS está construido sobre frameworks HTTP (por defecto Express, pero se puede usar Fastify) y añade un potente sistema de inyección de dependencias (Dependency Injection), decoradores, Guards, Interceptors, Pipes y Filters. El framework utiliza activamente los decoradores de TypeScript, lo que hace que el código sea declarativo y legible.
\n\nInstalación de NestJS
\n\nPara instalar NestJS necesitará Node.js (versión 16 o superior) y un gestor de paquetes npm (o yarn, pnpm).
\n\nLa forma más sencilla de empezar es usar Nest CLI:
\n\nnpm install -g @nestjs/cli\nnest new my-nest-project\ncd my-nest-project\nnpm run start:dev\n\nSi prefiere instalar NestJS en un proyecto existente:
\n\nnpm install @nestjs/core @nestjs/common @nestjs/platform-express reflect-metadata rxjs typescript @types/node\n\nTambién necesitará instalar TypeScript y ts-node para el desarrollo:
\n\nnpm install -D typescript @types/node ts-node\n\nImportante: NestJS utiliza la biblioteca reflect-metadata para trabajar con decoradores. Asegúrese de que esté importada en el archivo principal main.ts:
import "reflect-metadata";\n\nInicio rápido con ejemplo de código
\n\nCreemos una aplicación REST API simple con un endpoint que devuelva un saludo.
\n\nEstructura del proyecto:
\nsrc/\n├── app.controller.ts\n├── app.module.ts\n├── app.service.ts\n└── main.ts\n\nmain.ts — punto de entrada:
\nimport { NestFactory } from '@nestjs/core';\nimport { AppModule } from './app.module';\n\nasync function bootstrap() {\n const app = await NestFactory.create(AppModule);\n await app.listen(3000);\n console.log('Server is running on http://localhost:3000');\n}\nbootstrap();\n\napp.module.ts — módulo raíz:
\nimport { Module } from '@nestjs/common';\nimport { AppController } from './app.controller';\nimport { AppService } from './app.service';\n\n@Module({\n imports: [],\n controllers: [AppController],\n providers: [AppService],\n})\nexport class AppModule {}\n\napp.controller.ts — controlador:
\nimport { Controller, Get } from '@nestjs/common';\nimport { AppService } from './app.service';\n\n@Controller()\nexport class AppController {\n constructor(private readonly appService: AppService) {}\n\n @Get()\n getHello(): string {\n return this.appService.getHello();\n }\n}\n\napp.service.ts — servicio (lógica de negocio):
\nimport { Injectable } from '@nestjs/common';\n\n@Injectable()\nexport class AppService {\n getHello(): string {\n return 'Hello World!';\n }\n}\n\nEjecute la aplicación con el comando npm run start:dev y abra http://localhost:3000. Verá "Hello World!".
Métodos y funciones principales de NestJS
\n\nVeamos 10 elementos clave de NestJS que se utilizan en cada proyecto.
\n\n1. @Module() — decorador de módulo
\nQué hace: Define una cl
También en la biblioteca
Event Bus y el patrón Observer en Rust: implementación de arquitectura basada en eventos
Biblioteca estándar de Go (Golang): una visión completa
Trabajo con imágenes en Rust: la biblioteca image y más
Cliente OAuth para TypeScript: integración de autorización en aplicaciones web