Passer au contenu du pied de page
AIDE NODE

NestJS Node.js (Comment ça marche pour les développeurs)

Un cadre Node.js flexible et progressif, NestJS est destiné à créer des applications côté serveur efficaces et évolutives ainsi que des applications frontend extensibles. Il utilise TypeScript, un super-ensemble typé statiquement de JavaScript, pour améliorer la maintenabilité du code et l'efficacité des développeurs. NestJS se vante d'une conception résiliente et modulaire qui intègre des principes de programmation fonctionnelle (FP), de programmation orientée objet (OOP) et de programmation réactive fonctionnelle (FRP). NestJS favorise l'écriture d'un code hautement testable et maintenable en simplifiant le processus de développement et en mettant un accent majeur sur la modularité, l'injection de dépendances et les décorateurs.

En revanche, IronPDF est une bibliothèque puissante conçue pour faciliter la création, la modification et le travail avec des documents PDF dans les applications Node.js. Il peut convertir HTML en PDF, combiner des PDFs, ajouter des filigranes, et extraire du texte et des images de PDFs, entre de nombreuses autres fonctions. IronPDF offre une API simple pour créer et gérer dynamiquement des PDFs, et il s'intègre facilement avec les applications côté serveur évolutives Node.js.

Les développeurs peuvent créer des applications en ligne complexes nécessitant la création et la manipulation dynamiques de PDFs en combinant NestJS et IronPDF. Les applications qui génèrent des rapports, des factures et d'autres opérations axées sur les documents peuvent trouver cette intégration particulièrement utile. Avec l'aide des solides capacités PDF d'IronPDF et de la conception structurée et modulaire de NestJS, les développeurs peuvent créer des applications performantes et des projets impresionnants avec des fonctionnalités avancées de traitement de documents.

Qu'est-ce que NestJS?

NestJS est un cadre open-source, progressif, pour le développement d'applications côté serveur Node.js qui est efficace et évolutif. Il est écrit en TypeScript et utilise une architecture modulaire influencée par Angular pour augmenter l'efficacité des développeurs avec des fonctionnalités JavaScript modernes. NestJS utilise l'injection de dépendance et les décorateurs pour encourager un code bien organisé, ce qui aboutit à des applications extrêmement testées et maintenables.

Les développeurs peuvent concevoir un large éventail d'applications avec le cadre car il prend en charge de nombreux couches de transport, y compris HTTP, WebSockets, et gRPC. Il offre polyvalence et robustesse à travers une intégration transparente avec des cadres Node.js populaires comme Express et Fastify. NestJS facilite également aux développeurs la construction d'applications complexes en fournissant une prise en charge intégrée pour les bases de données, l'authentification et la validation.

NestJS est un outil parfait pour créer des solutions serverless efficaces, des microservices, et des applications de niveau entreprise grâce à son CLI Nest étendu, une documentation complète, et une communauté dynamique. C'est un choix populaire pour les outils de développement web contemporains en raison de sa conception modulaire qui garantit évolutivité et facilité de maintenance. Il permet aux développeurs de créer des applications frontend extensibles et d'améliorer la productivité des développeurs.

NestJS Node.js (Comment cela fonctionne pour les développeurs) : Figure 1 - NestJS

Fonctionnalités de NestJS

Prise en charge TypeScript

TypeScript, un super-ensemble typé statiquement de JavaScript qui fournit un autocomplétion sophistiqué, une sécurité de type, et des fonctionnalités linguistiques modernes, est utilisé dans la construction de NestJS. Cela augmente la maintenabilité du code et aide à la détection des erreurs lors de la compilation. NestJS prend en charge JavaScript ainsi que TypeScript par défaut, offrant aux développeurs plus de liberté.

Architecture modulaire

L'organisation du code basée sur des modules est encouragée par NestJS. Il est plus facile à maintenir, à faire évoluer et à organiser le code lorsque les composants liés comme les contrôleurs, fournisseurs et services sont encapsulés dans un seul module. Les modules de l'application peuvent être utilisés dans d'autres domaines, encourageant la philosophie DRY (Don't Repeat Yourself).

Injection de dépendances

L'un des principaux atouts de NestJS qui facilite la gestion des dépendances est un système d'injection de dépendances sophistiqué. Grâce à l'utilisation d'injecter des dépendances au lieu de les coder en dur, NestJS crée des composants faiblement couplés et testables. Un code plus modulaire et une meilleure séparation des préoccupations sont également rendus possibles par ce style.

Décorateurs

Les décorateurs sont très utilisés dans NestJS pour créer et configurer des classes et leurs membres. L'utilisation de décorateurs tels que @Controller(), @Get(), @Post(), @Injectable(), et d'autres améliorent la lisibilité et l'expressivité du code en rendant évident ce que fait chaque composant de l'application et comment il se comporte.

Compatibilité avec Express et Fastify

En raison de son adaptabilité, NestJS donne aux développeurs l'option d'utiliser soit Fastify, soit Express comme serveur HTTP sous-jacent. Bien que Fastify offre de meilleures performances, Express est réputé pour être convivial et efficient. Grâce à cette polyvalence, les développeurs peuvent adapter leurs applications pour répondre à des exigences uniques.

Middleware

Les fonctionnalités de middleware similaires à Express sont prises en charge par NestJS. Avant que les requêtes n'atteignent les gestionnaires de route, le middleware peut les traiter, fournissant des fonctionnalités telles que l'analyse du corps, l'authentification et la journalisation. Cela facilite la mise en œuvre d'une logique réutilisable pour le traitement des requêtes.

Gestion des exceptions

NestJS dispose d'un système de gestion des exceptions solide qui permet aux programmeurs de créer des filtres d'exception uniques. Ces filtres peuvent améliorer la gestion des erreurs et la cohérence des réponses à travers l'application en capturant et en traitant les exceptions de manière standardisée.

Tuyaux et Gards

Tuyaux : La transformation et la validation des données sont effectuées à l'aide de tuyaux. Ils peuvent être implémentés au niveau du contrôleur, au niveau du gestionnaire de route, ou globalement. Les tuyaux de validation et de transformation sont intégrés, et des tuyaux personnalisés peuvent également être créés.

Gards : La logique pour l'autorisation et l'authentification est mise en œuvre par les gards. Ils utilisent des règles spécifiques, comme la vérification des rôles ou permissions de l'utilisateur, pour décider d'approuver une requête.

Créer et Configurer NestJS

Un projet NestJS peut être créé et configuré en quelques étapes simples. Voici un guide complet pour vous lancer dans la création d'un nouveau projet.

Installer le CLI NestJS

Installez d'abord le CLI NestJS globalement, soit avec Yarn soit avec npm.

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

Créer un Nouveau Projet

Pour démarrer un nouveau projet NestJS, utilisez le CLI. Changez "my-nest-app" en le nom du projet que vous souhaitez.

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

Structure du projet

Voici un bref résumé de la structure standard du projet :

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 : Contient le principal contrôleur de l'application.
  • app.service.ts : Contient le principal service de l'application.
  • app.module.ts : Le module racine de l'application.
  • main.ts : Le point d'entrée de l'application.

Module de Configuration

Pour gérer les configurations, installez le package @nestjs/config.

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

Ajoutez le module de configuration au fichier 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 {}

Pour accéder aux variables d'environnement, utilisez le service de configuration.

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 (Comment cela fonctionne pour les développeurs) : Figure 2 - Résultat du projet NestJS

Démarrage

Pour commencer, nous allons construire une application exemple qui crée un document PDF avec des données produites dynamiquement en utilisant NestJS et IronPDF. Ceci est un manuel d'instructions détaillé qui suit pas à pas.

Qu'est-ce que IronPDF?

Pour simplifier le processus de création, d'édition et de gestion des PDFs, une bibliothèque d'application connue sous le nom de IronPDF a été créée. Les développeurs peuvent ajouter des en-têtes et des filigranes, fusionner plusieurs documents PDF, extraire du texte et des images à partir de documents HTML, et accomplir plusieurs autres tâches avec ce programme. Grâce à la documentation détaillée d'IronPDF et à son API conviviale, les développeurs peuvent facilement créer automatiquement des documents PDF de haute qualité. IronPDF propose toutes les fonctionnalités et fonctionnalités nécessaires pour améliorer les flux de travail de document et offrir d'excellentes expériences utilisateur dans divers contextes, notamment la création de factures, de rapports et de documentation.

NestJS Node.js (Comment cela fonctionne pour les développeurs) : Figure 3 - IronPDF

Caractéristiques de IronPDF

  • Conversion d'HTML en PDF : Il s'agit d'un processus simple et rapide qui fonctionne avec tout type de texte HTML, y compris JavaScript et CSS.
  • Fusion de fichiers PDF : Combinez plusieurs documents PDF en un seul fichier PDF pour simplifier les tâches de gestion de documents.
  • Extraction de texte et d'images : Extrayez du texte et des images à partir de fichiers PDF pour permettre un traitement ou une analyse supplémentaire des données.
  • Filigrane : Vous pouvez appliquer des filigranes texte ou image aux pages PDF à des fins de branding ou de sécurité.
  • Inclure l'En-tête et le Pied de page : Vous pouvez ajouter un message personnalisé ou des numéros de page aux en-têtes et pieds de page des documents PDF.

Installer IronPDF

Utilisez le gestionnaire de paquets npm pour installer les paquets Node.js nécessaires pour activer la fonctionnalité IronPDF.

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

Intégrer NestJS avec IronPDF Node.js

Installer le package IronPDF Node.js, créer un service pour gérer la génération de PDF, et créer un contrôleur pour exposer des points de terminaison pour la génération de PDF sont les étapes impliquées dans l'intégration d'IronPDF avec une application NestJS.

Créer un Service PDF

Pour gérer la génération de PDFs, créez un nouveau service. Ce service convertira les informations HTML en PDFs en utilisant IronPDF.

nest generate service pdf
nest generate service pdf
SHELL

Appliquez la logique de génération de PDF dans le fichier pdf.service.ts créé.

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

Créer un Contrôleur PDF

Créez un contrôleur pour rendre un point de terminaison disponible pour la création de PDFs.

nest generate controller pdf
nest generate controller pdf
SHELL

Créez un point de terminaison dans le fichier pdf.controller.ts résultant qui prend la saisie HTML et produit 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 est utilisé pour transformer le contenu HTML en un tampon PDF qui est ensuite renvoyé à l'aide du PdfService. Le PdfService utilise IronPDF pour rendre l'HTML en un PDF. Cette intégration est facilement gérée via le contrôleur NestJS. L'étape suivante est de définir un point de terminaison POST, /generate, pour recevoir le contenu HTML depuis le client. En utilisant la bibliothèque IronPDF, nous convertissons les données HTML fournies en un PDF dans l'API.

Pour être plus précis, nous créons un tampon binaire du fichier PDF en utilisant pdf.saveAsBuffer() et créons un objet PDF à partir du contenu HTML en utilisant IronPdf.fromHtml(htmlContent). Ensuite, ce tampon est renvoyé au client avec le type MIME approprié (application/pdf). Le serveur écoute sur le port 3000 et enregistre tout problème rencontré lors du processus de création de PDF. En réponse, le client reçoit un code d'état 500 en cas d'erreur. Cette configuration aide à créer des factures, des rapports ou d'autres documents pour une application web puisqu'elle permet de créer dynamiquement des PDFs à partir du contenu HTML.

NestJS Node.js (Comment cela fonctionne pour les développeurs) : Figure 4 - Résultat PDF

Conclusion

Combiner les capacités de rendu PDF sophistiquées d'IronPDF avec la conception fiable et modulaire de NestJS offre une solution puissante pour la création de PDFs dynamiques. Les développeurs peuvent atteindre une variété d'objectifs commerciaux, y compris la production de rapports, de factures, et de documentation, en créant une application côté serveur efficace et évolutive capable de générer des PDFs à partir de texte HTML en suivant les procédures indiquées ci-dessus.

Les fonctionnalités d'IronPDF sont renforcées par la modularité, les décorateurs, et l'injection de dépendances de NestJS, ce qui produit une base de code facile à gérer et à tester. Avec IronPDF gérant les complexités de la production PDF, les développeurs peuvent se concentrer sur la logique d'affaires et créer des applications complexes avec aisance grâce à cette combinaison.

En incorporant IronPDF et les produits Iron Software dans votre pile de développement d'applications d'entreprise, nous pouvons garantir des solutions logicielles riches en fonctionnalités et de haute qualité pour les clients et les utilisateurs finaux. De plus, les projets, systèmes de backend, et l'optimisation des processus seront simplifiés avec cette base solide. IronSoftware et IronPDF commencent à $799 chacun. La documentation exhaustive de ces technologies, la communauté en ligne active de développeurs, et les mises à jour régulières en font un excellent choix pour les projets de développement logiciel modernes.

Darrius Serrant
Ingénieur logiciel Full Stack (WebOps)

Darrius Serrant est titulaire d'un baccalauréat en informatique de l'université de Miami et travaille comme ingénieur marketing WebOps Full Stack chez Iron Software. Attiré par le codage dès son plus jeune âge, il a vu l'informatique comme à la fois mystérieuse et accessible, en faisant le ...

Lire la suite