Saltar al pie de página
AYUDA DE NODE

NestJS Node.js (Cómo funciona para desarrolladores)

Un marco de Node.js flexible y progresivo, NestJS está diseñado para crear aplicaciones del lado del servidor efectivas y escalables y aplicaciones front-end extensibles. Utiliza TypeScript, un superconjunto de JavaScript con tipado estático, para mejorar el mantenimiento del código y la eficiencia del desarrollador. NestJS cuenta con un diseño resiliente y modular que incorpora principios de programación funcional (FP), programación orientada a objetos (OOP) y programación funcional reactiva (FRP). NestJS promueve la escritura de código altamente testeable y mantenible al simplificar el proceso de desarrollo y colocar un gran énfasis en la modularidad, la inyección de dependencias y los decoradores.

Por el contrario, IronPDF es una potente biblioteca diseñada para facilitar la creación, edición y trabajo con documentos PDF en aplicaciones de Node.js. Puede convertir HTML a PDF, combinar PDF, agregar marcas de agua y extraer texto e imágenes de PDF, entre muchas otras funciones. IronPDF ofrece una API simple para crear y gestionar PDFs de manera dinámica, y se integra fácilmente con aplicaciones del lado del servidor escalables en Node.js.

Los desarrolladores pueden crear aplicaciones en línea intrincadas y complejas que requieren la creación y manipulación dinámica de PDFs al combinar NestJS e IronPDF. Las aplicaciones que generan informes, facturas y otras operaciones impulsadas por documentos pueden encontrar esta integración especialmente útil. Con la ayuda de las potentes capacidades de PDF de IronPDF y el diseño estructurado y modular de NestJS, los desarrolladores pueden crear aplicaciones de alto rendimiento y proyectos asombrosos con características sofisticadas de procesamiento de documentos.

¿Qué es NestJS?

NestJS es un marco de código abierto y progresivo para el desarrollo de aplicaciones del lado del servidor de Node.js que es efectivo y escalable. Está escrito en TypeScript y utiliza una arquitectura modular influenciada por Angular para aumentar la eficiencia del desarrollador con características modernas de JavaScript. NestJS utiliza inyección de dependencias y decoradores para fomentar un código bien organizado, lo que resulta en aplicaciones extremadamente testeadas y mantenibles.

Los desarrolladores pueden diseñar una amplia gama de aplicaciones con el marco porque admite muchas capas de transporte, incluidas HTTP, WebSockets y gRPC. Ofrece versatilidad y robustez a través de una integración fluida con marcos populares de Node.js como Express y Fastify. NestJS también facilita a los desarrolladores la construcción de aplicaciones complicadas al proporcionar soporte integrado para bases de datos, autenticación y validación.

NestJS es una herramienta perfecta para construir soluciones sin servidor eficientes, microservicios y aplicaciones a nivel empresarial gracias a su amplio CLI de Nest, su documentación completa y su comunidad vibrante. Es una opción popular para herramientas de desarrollo web modernas debido a su diseño modular, que garantiza escalabilidad y facilidad de mantenimiento. Permite a los desarrolladores crear aplicaciones front-end extensibles y mejorar la productividad del desarrollador.

NestJS Node.js (Cómo Funciona Para Desarrolladores): Figura 1 - NestJS

Características de NestJS

Soporte para TypeScript

TypeScript, un superconjunto estáticamente tipado de JavaScript que proporciona autocompletado sofisticado, seguridad de tipos y características modernas del lenguaje, se utiliza en la construcción de NestJS. Esto aumenta el mantenimiento del código y ayuda en la detección de errores durante la compilación. NestJS admite JavaScript y TypeScript de manera predeterminada, brindando a los desarrolladores más libertad.

Arquitectura modular

NestJS fomenta la organización del código basada en módulos. Es más fácil mantener, escalar y organizar el código cuando los componentes relacionados como controladores, proveedores y servicios se encapsulan en un solo módulo. Los módulos de la aplicación pueden utilizarse en otras áreas, fomentando la filosofía DRY (Don't Repeat Yourself).

Inyección de dependencia

Una de las características principales de NestJS que facilita la gestión de dependencias es un sistema sofisticado de inyección de dependencias. Mediante el uso de la inyección de dependencias en lugar de codificarlas, NestJS crea componentes libremente acoplados y testeables. Este estilo también permite un código más modular y una mejor separación de preocupaciones.

Decoradores

Los decoradores se utilizan ampliamente en NestJS para crear y configurar clases y sus miembros. El uso de decoradores como @Controller(), @Get(), @Post(), @Injectable(), y otros mejoran la legibilidad y expresividad del código haciendo evidente lo que hace cada componente de la aplicación y cómo se comporta.

Compatibilidad con Express y Fastify

Debido a su adaptabilidad, NestJS ofrece a los desarrolladores la opción de usar Fastify o Express como el servidor HTTP subyacente. Mientras que Fastify proporciona mejor rendimiento, Express es reconocido por ser fácil de usar y eficiente. Debido a esta versatilidad, los desarrolladores pueden adaptar sus aplicaciones para satisfacer requisitos únicos.

Middleware

NestJS admite funcionalidades de middleware similares a Express. Antes de que las solicitudes lleguen a los manejadores de rutas, el middleware puede manejarlas, proporcionando características como análisis de cuerpo, autenticación y registro. Esto facilita la implementación de lógica reutilizable para el manejo de solicitudes.

Manejo de excepciones

NestJS tiene un sistema sólido de manejo de excepciones que permite a los programadores crear filtros de excepciones únicos. Estos filtros pueden mejorar la gestión de errores y la uniformidad de respuestas en toda la aplicación al capturar y manejar excepciones de manera estandarizada.

Tubos y guardias

Tuberías: La transformación y validación de datos se logra utilizando tuberías. Pueden implementarse a nivel de controlador, a nivel de manejador de rutas o globalmente. Las tuberías de validación y transformación son internas, y también se pueden crear tuberías personalizadas.

Guardias: Los guardias implementan la lógica de autorización y autenticación. Utilizan reglas específicas, como verificar roles de usuario o permisos, para decidir si aprobar una solicitud.

Crear y configurar NestJs

Se puede crear y configurar un proyecto de NestJS en unos pocos pasos simples. Aquí hay una guía completa para que puedas comenzar a crear un nuevo proyecto.

Instalar NestJS CLI

Primero instala el CLI de NestJS globalmente, ya sea con Yarn o npm.

npm install -g @nestjs/cli
npm install -g @nestjs/cli
SHELL

Crear un nuevo proyecto

Para iniciar un nuevo proyecto de NestJS, utiliza el CLI. Cambia "my-nest-app" por el nombre del proyecto que desees.

nest new my-nest-app
nest new my-nest-app
SHELL

Estructura del proyecto

Este es un breve resumen de la estructura estándar del proyecto:

src/
├── app.controller.ts
├── app.controller.spec.ts
├── app.module.ts
├── app.service.ts
├── main.ts
test/
├── app.e2e-spec.ts
└── jest-e2e.json
  • app.controller.ts: Contiene el controlador principal de la aplicación.
  • app.service.ts: Contiene el servicio principal de la aplicación.
  • app.module.ts: El módulo raíz de la aplicación.
  • main.ts: El punto de entrada de la aplicación.

Módulo de configuración

Para gestionar configuraciones, instala el paquete @nestjs/config.

npm install @nestjs/config
npm install @nestjs/config
SHELL

Agrega el módulo de configuración al archivo app.module.ts.

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true, // Make the module global
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

Para acceder a las variables de entorno, utiliza el servicio de configuración.

import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';

@Injectable()
export class AppService {
  constructor(private configService: ConfigService) {}

  getHello(): string {
    return `Hello World!`;
  }
}

NestJS Node.js (Cómo Funciona Para Desarrolladores): Figura 2 - Salida del Proyecto NestJS

Empezando

Para comenzar, construiremos una aplicación de ejemplo que crea un documento PDF con datos generados dinámicamente utilizando NestJS e IronPDF. Esta es una guía de instrucciones detallada paso a paso.

¿Qué es IronPDF?

Para simplificar el proceso de creación, edición y gestión de PDFs, se creó una biblioteca de aplicaciones conocida como IronPDF. Los desarrolladores pueden agregar encabezados y marcas de agua, combinar múltiples documentos PDF, extraer texto e imágenes de documentos HTML y realizar varias otras tareas con este programa. Gracias a la documentación exhaustiva de IronPDF y a su API fácil de usar, los desarrolladores pueden crear fácilmente documentos PDF de alta calidad de forma automática. IronPDF tiene todas las características y funcionalidades necesarias para mejorar los flujos de trabajo de documentos y proporcionar excelentes experiencias de usuario en una variedad de contextos, incluida la creación de facturas, informes y documentación.

NestJS Node.js (Cómo Funciona Para Desarrolladores): Figura 3 - IronPDF

Características de IronPDF

  • Convirtiendo HTML a PDF: Este es un proceso fácil y rápido que funciona con cualquier tipo de texto HTML, incluidas JavaScript y CSS.
  • Fusión de archivos PDF: Combine varios documentos PDF en un solo archivo PDF para simplificar las tareas de gestión de documentos.
  • Extracción de Texto e Imágenes: Extrae texto e imágenes de archivos PDF para que puedan realizarse con ellos un procesamiento o análisis de datos adicional.
  • Marca de Agua: Puedes aplicar marcas de agua de texto o imagen a las páginas PDF para fines de marca o seguridad.
  • Incluir Encabezado y Pie de Página: Puedes agregar un mensaje personalizado o números de página a los encabezados y pies de página de documentos PDF.

Instalar IronPDF

Use el administrador de paquetes de nodo para instalar los paquetes de Node.js necesarios para habilitar la funcionalidad de IronPDF.

npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
SHELL

Integre NestJS con IronPDF for Node.js

La instalación del paquete IronPDF Node.js, la creación de un servicio para gestionar la generación de PDFs y la creación de un controlador para exponer puntos finales para la generación de PDFs son los pasos involucrados en la integración de IronPDF con una aplicación de NestJS.

Crear un servicio PDF

Para gestionar la generación de PDFs, crea un nuevo servicio. Este servicio convertirá información HTML en PDFs usando IronPDF.

nest generate service pdf
nest generate service pdf
SHELL

Aplica la lógica de generación de PDF en el archivo pdf.service.ts creado.

// src/pdf/pdf.service.ts
import { Injectable } from '@nestjs/common';
const IronPdf = require('@ironsoftware/ironpdf');
const document = IronPdf.PdfDocument;
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: '' });

@Injectable()
export class PdfService {
  async generatePdf(htmlContent: string): Promise<Buffer> {
    const pdf = await document.fromHtml(htmlContent);
    const pdfBuffer = await pdf.saveAsBuffer();
    return pdfBuffer;
  }
}

Crear un controlador PDF

Crea un controlador para hacer disponible un punto final para la creación de PDFs.

nest generate controller pdf
nest generate controller pdf
SHELL

Crea un punto final en el archivo pdf.controller.ts resultante que tome entrada HTML y produzca un PDF.

// src/pdf/pdf.controller.ts
import { Controller, Post, Body, Res } from '@nestjs/common';
import { PdfService } from './pdf.service';
import { Response } from 'express';

@Controller('pdf')
export class PdfController {
  constructor(private readonly pdfService: PdfService) {}

  @Post('generate')
  async generatePdf(@Body('html') htmlContent: string, @Res() res: Response) {
    const pdfBuffer = await this.pdfService.generatePdf(htmlContent);
    res.set({
      'Content-Type': 'application/pdf',
      'Content-Disposition': 'attachment; filename=generated.pdf',
      'Content-Length': pdfBuffer.length,
    });
    res.end(pdfBuffer);
  }
}

IronPDF se utiliza para transformar el contenido HTML en un búfer PDF, que luego se devuelve usando el PdfService. El PdfService usa IronPDF para renderizar HTML como un PDF. Esta integración se maneja fácilmente a través del controlador de NestJS. El siguiente paso es definir un punto final POST, /generate, para recibir el contenido HTML del cliente. Usando la biblioteca IronPDF, convertimos los datos HTML proporcionados en un PDF dentro de la API.

Para ser más precisos, creamos un búfer binario del archivo PDF usando pdf.saveAsBuffer() y creamos un objeto PDF a partir de contenido HTML utilizando IronPdf.fromHtml(htmlContent). Luego, este búfer se devuelve al cliente con el tipo MIME apropiado (application/pdf). El servidor escucha en el puerto 3000 y registra cualquier problema encontrado durante el proceso de creación de PDFs. En respuesta, el cliente recibe un código de estado 500 en caso de error. Este sistema ayuda cuando se crean facturas, informes u otros documentos para una aplicación web, ya que permite crear PDFs dinámicos a partir de contenido HTML.

NestJS Node.js (Cómo Funciona Para Desarrolladores): Figura 4 - Salida PDF

Conclusión

Combinar las capacidades avanzadas de renderización de PDF de IronPDF con el diseño confiable y modular de NestJS proporciona una solución poderosa para la creación dinámica de PDFs. Los desarrolladores pueden abordar una variedad de objetivos comerciales, incluidos la producción de informes, facturas y documentación, creando una aplicación del lado del servidor eficaz y escalable que pueda generar PDFs a partir de texto HTML siguiendo los procedimientos indicados anteriormente.

Las características de IronPDF se ven mejoradas por la modularidad, decoradores e inyección de dependencias de NestJS, lo que produce una base de código fácil de gestionar y probar. Con IronPDF manejando las complejidades de la producción de PDFs, los desarrolladores pueden centrarse en la lógica empresarial y crear aplicaciones complicadas con facilidad gracias a esta combinación.

Al incorporar IronPDF y los productos de Iron Software en su pila de desarrollo de aplicaciones empresariales, podemos asegurar soluciones de software premium y ricas en características para clientes y usuarios finales. Además, los proyectos, sistemas backend y la optimización de procesos serán más sencillos con esta sólida base. Iron Software e IronPDF comienzan en $799 cada uno. La amplia documentación de estas tecnologías, la comunidad activa de desarrolladores en línea y las actualizaciones regulares las convierten en un ajuste excelente para proyectos de desarrollo de software moderno.

Darrius Serrant
Ingeniero de Software Full Stack (WebOps)

Darrius Serrant tiene una licenciatura en Ciencias de la Computación de la Universidad de Miami y trabaja como Ingeniero de Marketing WebOps Full Stack en Iron Software. Atraído por la programación desde joven, vio la computación como algo misterioso y accesible, convirtiéndolo en el ...

Leer más