Ir para o conteúdo do rodapé
AJUDA DO NODE

NestJS Node.js (Como funciona para desenvolvedores)

O NestJS é um framework Node.js flexível e progressivo, projetado para criar aplicações de servidor eficazes e escaláveis, bem como aplicações de front-end extensíveis. Ele utiliza TypeScript, um superconjunto estaticamente tipado de JavaScript, para melhorar a manutenção do código e a eficiência do desenvolvedor. O NestJS possui um design resiliente e modular que incorpora princípios de programação funcional (FP), programação orientada a objetos (OOP) e programação funcional reativa ( FRP ). O NestJS promove a escrita de código altamente testável e de fácil manutenção, simplificando o processo de desenvolvimento e dando grande ênfase à modularidade, injeção de dependência e decoradores.

Por outro lado, o IronPDF é uma biblioteca poderosa criada para facilitar a criação, edição e manipulação de documentos PDF em aplicações Node.js Ele pode converter HTML em PDF, combinar PDFs, adicionar marcas d'água e extrair texto e imagens de PDFs, entre muitas outras funções. O IronPDF oferece uma API simples para criar e gerenciar PDFs dinamicamente, e se integra facilmente a aplicativos escaláveis ​​do lado do servidor em Node.js

Os desenvolvedores podem criar aplicativos online complexos e sofisticados que exigem a criação e manipulação dinâmica de PDFs, combinando NestJS e IronPDF. Aplicações que geram relatórios, faturas e outras operações baseadas em documentos podem achar essa integração especialmente útil. Com a ajuda dos robustos recursos de PDF do IronPDF e do design organizado e modular do NestJS, os desenvolvedores podem criar aplicativos de alto desempenho e projetos incríveis com recursos sofisticados de processamento de documentos.

O que é NestJS?

NestJS é um framework de código aberto e progressivo para o desenvolvimento de aplicações Node.js do lado do servidor, que é eficaz e escalável. É escrito em TypeScript e utiliza uma arquitetura modular influenciada pelo Angular para aumentar a eficiência do desenvolvedor com recursos JavaScript contemporâneos. O NestJS utiliza injeção de dependência e decoradores para incentivar um código bem organizado, o que resulta em aplicações extremamente testadas e de fácil manutenção.

Os desenvolvedores podem projetar uma ampla gama de aplicativos com a estrutura, pois ela oferece suporte a várias camadas de transporte, incluindo HTTP, WebSockets e gRPC. Oferece versatilidade e robustez através da integração perfeita com frameworks populares do Node.js, como Express e Fastify. O NestJS também facilita o trabalho dos desenvolvedores na criação de aplicações complexas, fornecendo suporte integrado para bancos de dados, autenticação e validação.

O NestJS é uma ferramenta perfeita para criar soluções serverless eficientes, microsserviços e aplicativos de nível empresarial devido à sua extensa CLI (Clipart de Linha de Comando), documentação completa e comunidade ativa. É uma opção popular entre as ferramentas de desenvolvimento web contemporâneas devido ao seu design modular, que garante escalabilidade e facilidade de manutenção. Permite aos desenvolvedores criar aplicações front-end extensíveis e melhorar a produtividade.

NestJS Node.js (Como funciona para desenvolvedores): Figura 1 - NestJS

Funcionalidades do NestJS

Suporte a TypeScript

O TypeScript, um superconjunto de JavaScript com tipagem estática que oferece recursos sofisticados de autocompletar, segurança de tipos e funcionalidades modernas da linguagem, é utilizado na construção do NestJS. Isso aumenta a facilidade de manutenção do código e auxilia na detecção de erros durante a compilação. O NestJS oferece suporte a JavaScript e TypeScript por padrão, dando aos desenvolvedores mais liberdade.

Arquitetura Modular

O NestJS incentiva a organização do código baseada em módulos. É mais fácil manter, dimensionar e organizar o código quando componentes relacionados, como controladores, provedores e serviços, são encapsulados em um único módulo. Os módulos da aplicação podem ser utilizados em outras áreas, incentivando a filosofia DRY (Don't Repeat Yourself - Não se Repita).

Injeção de Dependência

Uma das principais funcionalidades do NestJS que facilita o gerenciamento de dependências é um sistema sofisticado de injeção de dependências. Ao injetar dependências em vez de codificá-las diretamente no código, o NestJS cria componentes fracamente vinculados e testáveis. Esse estilo também possibilita um código mais modular e uma melhor separação de responsabilidades.

Decoradores

Os decoradores são amplamente utilizados no NestJS para criar e configurar classes e seus membros. O uso de decoradores como @Controller(), @Get(), @Post(), @Injectable() e outros melhora a legibilidade e a expressividade do código, tornando evidente o que cada componente do aplicativo faz e como ele se comporta.

Compatibilidade com Express e Fastify

Graças à sua adaptabilidade, o NestJS oferece aos desenvolvedores a opção de usar o Fastify ou o Express como servidor HTTP subjacente. Embora o Fastify ofereça melhor desempenho, o Express é conhecido por ser fácil de usar e eficiente. Graças a essa versatilidade, os desenvolvedores podem adaptar seus aplicativos para atender a requisitos específicos.

Middleware

O NestJS oferece suporte a funcionalidades de middleware semelhantes ao Express. Antes que as requisições cheguem aos manipuladores de rotas, o middleware pode processá-las, fornecendo funcionalidades como análise do corpo da requisição, autenticação e registro de logs. Isso facilita a implementação de lógica reutilizável para o tratamento de solicitações.

Tratamento de Exceções

O NestJS possui um sistema robusto de tratamento de exceções que permite aos programadores criar filtros de exceção exclusivos. Esses filtros podem melhorar o gerenciamento de erros e a uniformidade de resposta em toda a aplicação, capturando e tratando exceções de maneira padronizada.

Tubos e protetores

Pipes: A transformação e validação de dados são realizadas usando pipes. Eles podem ser implementados no nível do controlador, no nível do manipulador de rotas ou globalmente. Os fluxos de validação e transformação já estão integrados, e também é possível criar fluxos personalizados.

Guardas: A lógica de autorização e autenticação é implementada pelos guardas. Eles utilizam regras específicas, como a verificação de funções ou permissões do usuário, para decidir se aprovam ou não uma solicitação.

Criar e configurar o NestJS

Um projeto NestJS pode ser criado e configurado em poucos passos simples. Aqui está um guia completo para você começar a criar um novo projeto.

Instale a CLI do NestJS

Primeiro, instale a CLI do NestJS globalmente, seja com o Yarn ou o npm.

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

Criar um novo projeto

Para iniciar um novo projeto NestJS, use a CLI. Substitua "my-nest-app" pelo nome do projeto desejado.

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

Estrutura do Projeto

Segue um breve resumo da estrutura padrão do projeto:

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: Contém o controlador principal da aplicação.
  • app.service.ts: Contém o serviço principal da aplicação.
  • app.module.ts: O módulo raiz da aplicação.
  • main.ts: O ponto de entrada da aplicação.

Módulo de Configuração

Para gerenciar as configurações, instale o pacote @nestjs/config.

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

Adicione o módulo de configuração ao arquivo 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 acessar as variáveis ​​de ambiente, utilize o serviço de configuração.

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 (Como funciona para desenvolvedores): Figura 2 - Saída do projeto NestJS

Começando

Para começar, vamos construir um aplicativo de exemplo que cria um documento PDF com dados gerados dinamicamente usando NestJS e IronPDF. Este é um manual de instruções detalhado que explica o processo passo a passo.

O que é o IronPDF?

Para simplificar o processo de criação, edição e gerenciamento de PDFs, foi criada uma biblioteca de aplicativos conhecida como IronPDF . Com este programa, os desenvolvedores podem adicionar cabeçalhos e marcas d'água, mesclar vários documentos PDF, extrair texto e imagens de documentos HTML e realizar diversas outras tarefas. Graças à documentação completa e à API intuitiva do IronPDF, os desenvolvedores podem criar documentos PDF de alta qualidade automaticamente com facilidade. O IronPDF possui todos os recursos e funcionalidades necessários para aprimorar os fluxos de trabalho de documentos e proporcionar excelentes experiências de usuário em diversos contextos, incluindo a criação de faturas, relatórios e documentação.

NestJS Node.js (Como funciona para desenvolvedores): Figura 3 - IronPDF

Funcionalidades do IronPDF

  • Converter HTML para PDF: Este é um processo fácil e rápido que funciona com qualquer tipo de texto HTML, incluindo JavaScript e CSS.
  • Fusão de arquivos PDF: Combine vários documentos PDF em um único arquivo PDF para simplificar as tarefas de gerenciamento de documentos.
  • Extração de texto e imagem: Extraia texto e imagens de arquivos PDF para que possam ser processados ​​ou analisados ​​posteriormente.
  • Marca d'água: Você pode aplicar marcas d'água de texto ou imagem às páginas de PDF para fins de identidade visual ou segurança.
  • Incluir cabeçalho e rodapé: Você pode adicionar uma mensagem personalizada ou números de página aos cabeçalhos e rodapés de documentos PDF.

Instale o IronPDF

Utilize o gerenciador de pacotes do Node para instalar os pacotes Node.js necessários para habilitar a funcionalidade do IronPDF .

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

Integre o NestJS com o IronPDF Node.js

A integração do IronPDF com uma aplicação NestJS envolve as etapas de instalação do pacote IronPDF for Node.js , criação de um serviço para gerenciar a geração de PDFs e criação de um controlador para expor os endpoints para geração de PDFs.

Criar um serviço de PDF

Para gerenciar a geração de PDFs, crie um novo serviço. Esse serviço converterá informações HTML em PDFs usando o IronPDF.

nest generate service pdf
nest generate service pdf
SHELL

Aplique a lógica de geração de PDF no arquivo pdf.service.ts criado.

// 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;
  }
}

Criar um controlador de PDF

Crie um controlador para disponibilizar um endpoint para a criação de PDFs.

nest generate controller pdf
nest generate controller pdf
SHELL

Crie um endpoint no arquivo pdf.controller.ts resultante que receba um elemento HTML como entrada e gere um PDF como saída.

// 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);
  }
}

O IronPDF é usado para transformar o conteúdo HTML em um buffer PDF, que é então retornado usando o PdfService. O PdfService usa o IronPDF para renderizar HTML como um PDF. Essa integração é facilmente gerenciada através do controlador NestJS. O próximo passo é definir um endpoint POST, /generate, para receber o conteúdo HTML do cliente. Utilizando a biblioteca IronPDF , convertemos os dados HTML fornecidos em um PDF dentro da API.

Para sermos mais precisos, criamos um buffer binário do arquivo PDF usando pdf.saveAsBuffer() e criamos um objeto PDF a partir do conteúdo HTML usando IronPdf.fromHtml(htmlContent). Em seguida, esse buffer é retornado ao cliente com o tipo MIME apropriado (application/pdf). O servidor escuta na porta 3000 e registra quaisquer problemas encontrados durante o processo de criação do PDF. Em resposta, o cliente recebe um código de status 500 de erro. Essa configuração é útil na criação de faturas, relatórios ou outros documentos para um aplicativo web, pois permite a criação de PDFs dinâmicos a partir de conteúdo HTML.

NestJS Node.js (Como funciona para desenvolvedores): Figura 4 - Saída em PDF

Conclusão

A combinação dos recursos sofisticados de renderização de PDF do IronPDF com o design modular e confiável do NestJS oferece uma solução poderosa para a criação dinâmica de PDFs. Os desenvolvedores podem atingir diversos objetivos de negócios, incluindo a geração de relatórios, faturas e documentação, criando um aplicativo de servidor eficaz e escalável que possa gerar PDFs a partir de texto HTML, seguindo os procedimentos indicados acima.

Os recursos do IronPDF são aprimorados pela modularidade, pelos decoradores e pela injeção de dependência do NestJS, o que resulta em uma base de código fácil de gerenciar e testar. Com o IronPDF cuidando das complexidades da produção de PDFs, os desenvolvedores podem se concentrar na lógica de negócios e criar aplicativos complexos com facilidade graças a essa combinação.

Ao incorporar os produtos IronPDF e Iron Software em sua pilha de desenvolvimento de aplicativos corporativos, podemos garantir soluções de software premium e ricas em recursos para clientes e usuários finais. Além disso, projetos, sistemas de back-end e otimização de processos serão mais simples com essa base sólida. IronSoftware e IronPDF começam em $799 cada. A extensa documentação dessas tecnologias, a ativa comunidade de desenvolvedores online e as atualizações regulares as tornam uma excelente opção para projetos modernos de desenvolvimento de software.

Darrius Serrant
Engenheiro de Software Full Stack (WebOps)

Darrius Serrant é bacharel em Ciência da Computação pela Universidade de Miami e trabalha como Engenheiro de Marketing WebOps Full Stack na Iron Software. Atraído por programação desde jovem, ele via a computação como algo misterioso e acessível ao mesmo tempo, tornando-a o meio ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim