Passer au contenu du pied de page
AIDE NODE

NPM fuse-box (Comment ça marche pour les développeurs)

Un bundle est devenu un outil essentiel dans la boîte à outils de toute application Node.js moderne. Les bundlers — Webpack, Rollup, Vite — gèrent et empaquètent le code et les actifs. Ils fusionnent de nombreux fichiers différents en un ou quelques bundles optimisés, améliorant les performances en réduisant le nombre de requêtes réseau et en fournissant le code à charger efficacement. De plus, la plupart des bundles disposent déjà de compléments comme le code splitting, le remplacement à chaud de module et l'agitation d'arbre qui augmentent l'expérience en tant que développeur et utilisateur final.

Les bundlers sont des facilitateurs critiques d'applications évolutives et maintenables grâce à leur intégration avec les outils de compilation et les standards JavaScript modernes, car ils optimisent la livraison des ressources et fluidifient les workflows de déploiement. Dans cet article, nous utiliserons la boîte à fusibles NPM comme exemple de référence d'un bundler avec la bibliothèque IronPDF Node.js.

Le paquetage NPM FuseBox est le bundler le plus rapide, basé sur le contexte, et le plus avant-gardiste, vous permettant de gérer et de regrouper les actifs de votre application web moderne avec facilité. En ce qui concerne l'efficacité du développeur, le chargeur de module FuseBox dispose d'une configuration facile qui aide le développeur à mettre les choses en place rapidement pour commencer à construire son projet. Il prend en charge toutes les fonctionnalités souhaitées : rechargement à chaud, séparation de code, agitation d'arbre, etc., rendant le développement facile et le résultat final hautement optimisé.

NPM fuse-box (Comment Ça Fonctionne Pour Les Développeurs) : Figure 1 - fuse-box

FuseBox prend en charge de nombreux types de fichiers : JavaScript, TypeScript, CSS, et images. Le chargeur de module FuseBox s'intègre parfaitement avec les frameworks et bibliothèques populaires. De plus, il dispose d'un système de plugins intégré qui permettra d'étendre et de personnaliser encore FuseBox en fonction des besoins de votre projet. En équilibrant performance et facilité d'utilisation, FuseBox accélérera considérablement votre workflow de développement et regroupera de manière optimisée pour la production. FuseBox le porte à un niveau complètement nouveau.

Pour créer et configurer un projet FuseBox, suivez ces étapes :

Initialiser un Nouveau Projet Node.js pour FuseBox

Créez un répertoire pour votre projet, puis ouvrez-le dans Node.js.

mkdir fusebox-project
cd fusebox-project
npm init -y
mkdir fusebox-project
cd fusebox-project
npm init -y
SHELL

Pour Installer fuse-box

Installez fuse-box et d'autres dépendances comme TypeScript si vous l'utilisez.

npm install fuse-box typescript --save-dev
npm install fuse-box typescript --save-dev
SHELL

Créer un fichier de Configuration FuseBox

Créez un fichier fuse.js pour configurer FuseBox.

const { fusebox, sparky } = require('fuse-box');

class Context {
  // Method to return the FuseBox configuration
  getConfig() {
    return fusebox({
      target: 'browser',
      entry: 'src/index.ts',
      webIndex: {
        template: 'src/index.html',
      },
      devServer: true,
      hmr: true,
      cache: true,
      logging: {
        level: 'succinct',
      },
      sourceMap: true,
    });
  }
}

const { task, exec, rm } = sparky(Context);

// Define development task
task('default', async (ctx) => {
  rm('dist');
  const fuse = ctx.getConfig();
  await fuse.runDev();
});

// Define production build task
task('dist', async (ctx) => {
  rm('dist');
  const fuse = ctx.getConfig();
  await fuse.runProd();
});
const { fusebox, sparky } = require('fuse-box');

class Context {
  // Method to return the FuseBox configuration
  getConfig() {
    return fusebox({
      target: 'browser',
      entry: 'src/index.ts',
      webIndex: {
        template: 'src/index.html',
      },
      devServer: true,
      hmr: true,
      cache: true,
      logging: {
        level: 'succinct',
      },
      sourceMap: true,
    });
  }
}

const { task, exec, rm } = sparky(Context);

// Define development task
task('default', async (ctx) => {
  rm('dist');
  const fuse = ctx.getConfig();
  await fuse.runDev();
});

// Define production build task
task('dist', async (ctx) => {
  rm('dist');
  const fuse = ctx.getConfig();
  await fuse.runProd();
});
JAVASCRIPT

Cet exemple simple est la configuration et l'utilisation de FuseBox pour effectuer des tâches de bundling et de développement dans un environnement Node.js. L'exemple commence par importer 'fusebox' et 'sparky' depuis le paquet 'fuse-box', puis définit une classe Context avec une méthode getConfig qui renvoie un objet de configuration FuseBox. Il configure les paramètres suivants : il cible le navigateur, il prend src/index.ts comme point d'entrée et src/index.html comme modèle pour l'index web. Enfin, la configuration du serveur de développement vient avec les options de configuration minimales suivantes : HMR, mise en cache, cartes sources et journaux très rapidement.

L'étape suivante sera de définir des tâches en utilisant l'utilitaire sparky. La tâche('default') nettoie le répertoire dist, obtient la configuration FuseBox, et lance le serveur de développement. De même, la tâche('dist') nettoie le répertoire dist mais n'a aucune configuration et exécute plutôt la construction de production. La configuration est très utile pour gérer le développement et la production efficacement en automatisant la construction et le service.

Créer un fichier HTML simple

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>FuseBox App</title>
</head>
<body>
  $bundles
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>FuseBox App</title>
</head>
<body>
  $bundles
</body>
</html>
HTML

Le modèle HTML ci-dessus configure une page simple pour un projet FuseBox. Il inclut le codage des caractères et des métadonnées de conception réactive. Le placeholder, $bundles, est remplacé dynamiquement par FuseBox avec les balises de script et de style correctes pour s'assurer que les actifs regroupés sont correctement chargés, permettant au JavaScript et au CSS de se charger de manière optimisée.

Créer un fichier TypeScript

// Set the HTML content of the body element
document.body.innerHTML = '<h1>Hello, FuseBox!</h1>';

Cette ligne de code JavaScript définit le contenu HTML de l'élément body de la page web actuelle. Elle remplacera le contenu à l'intérieur de la balise <body> par un nouvel élément d'en-tête

. Le texte dans l'en-tête affiche "Hello, FuseBox!". En essence, c'est un moyen très simple d'ajouter ou de mettre à jour dynamiquement du contenu sur une page web en utilisant JavaScript.

Configuration TypeScript

Générez un fichier tsconfig.json pour contenir la configuration supplémentaire des paramètres de TypeScript.

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*"]
}

Une fois terminé, exécutez le code. Il héberge l'application sur localhost:4444 :

NPM fuse-box (Comment Ça Fonctionne Pour Les Développeurs) : Figure 2 - Sortie du Console

Nous pouvons voir la page à partir du port localhost donné. Cela s'affichera comme la capture d'écran ci-dessous.

NPM fuse-box (Comment Ça Fonctionne Pour Les Développeurs) : Figure 3 - Sortie de l'Application

Présentation d'IronPDF : Créateur de PDF

Pour la création, la modification, la conversion, et l'édition de documents PDF, utilisez le package robuste Node.js IronPDF. Il est utilisé dans de nombreuses opérations basées sur la programmation liées aux PDF, telles que la conversion de HTML en PDF et l'édition de PDFs existants. IronPDF est un outil extrêmement utile pour les programmes qui doivent générer et traiter dynamiquement des PDFs. Il offre une solution simple et adaptable pour créer des documents PDF de haute qualité.

NPM fuse-box (Comment Ça Fonctionne Pour Les Développeurs) : Figure 4 - IronPDF

Installer le package IronPDF

Utilisez NPM pour installer des packages qui autorisent Node.js à activer la capacité IronPDF.

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

Bundle Fuse-Box Avec IronPDF

Voici comment se connecter à un backend Node.js utilisant IronPDF et configurer FuseBox pour vos actifs front-end.

Fichier Fuse.js

const { fusebox } = require('fuse-box');

const fuse = fusebox({
  target: 'server',
  entry: 'src/index.ts',
  dependencies: {
    ignoreAllExternal: false,
  },
  watch: true,
  cache: false,
});

// Run the development server
fuse.runDev();
const { fusebox } = require('fuse-box');

const fuse = fusebox({
  target: 'server',
  entry: 'src/index.ts',
  dependencies: {
    ignoreAllExternal: false,
  },
  watch: true,
  cache: false,
});

// Run the development server
fuse.runDev();
JAVASCRIPT

Ce script établit une instance FuseBox pour regrouper les scripts côté serveur. Il commence par importer la fonction fusebox du paquet fuse-box et personnalise ensuite FuseBox avec des paramètres particuliers. Le paramètre 'server' indique que la sortie est destinée à un environnement Node.js, pas un navigateur web. Le entry: 'src/index.ts' pointe vers le fichier TypeScript principal pour initier la procédure de bundling.

Le dependencies: { ignoreAllExternal: false } veille à ce que les dépendances externes ne soient pas ignorées, ce qui signifie qu'elles sont ajoutées au bundle si nécessaire. La fonctionnalité watch: true permet la reconstruction automatique du bundle chaque fois que les fichiers sources sont mis à jour, ce qui aide dans le processus de développement. Enfin, cache: false désactive la mise en cache, garantissant que les mises à jour les plus récentes font toujours partie de la construction. La commande fuse.runDev() lance le serveur de développement avec ces paramètres.

Fichier Index.ts

const express = require("express");
const IronPdf = require("@ironsoftware/ironpdf");

var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({
  licenseKey: "", // Add your license key here
});

const htmlContent = `
<html>
<head>
  <style>
    body { font-family: Arial, sans-serif; }
    h1 { color: navy; }
    p { font-size: 14px; }
  </style>
</head>
<body>
  <h1>User Details</h1>
  <p><strong>ID:</strong> 1</p>
  <p><strong>Name:</strong> Hendry</p>
</body>
</html>
`;

// Express setup for handling requests
const app = express();
app.get("/generate-pdf", async (req, res) => {
  const document = IronPdf.PdfDocument;
  console.log("Requesting: generate-pdf");

  // Generate PDF document
  try {
    let result = await document.fromHtml(htmlContent);
    const pdfBuffer = await result.saveAsBuffer();
    res.setHeader("Content-Type", "application/pdf");
    res.send(pdfBuffer);
  } catch (error) {
    console.error("PDF generation error:", error);
    res.status(500).send("PDF generation error");
  }
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});

Ce script établit un serveur Node.js utilisant le framework Express pour générer des PDFs avec la bibliothèque IronPDF. Initialement, il inclut les modules nécessaires : Express pour les opérations du serveur et @ironsoftware/ironpdf pour la gestion des tâches PDF. Il configure IronPDF avec une clé de licence, ce qui est essentiel pour la création de PDFs. Le HTML pour le PDF est déclaré comme une chaîne, intégrant des styles fondamentaux et des détails pour l'utilisateur.

Ensuite, une application Express est développée, et un chemin URL /generate-pdf est établi. Chaque fois qu'une requête est reçue pour ce chemin, le serveur emploie la classe PdfDocument d'IronPDF pour produire un PDF à partir du contenu HTML donné. Ce PDF est ensuite stocké dans un tampon et renvoyé au client avec le type de contenu correct. Si une erreur survient pendant cette procédure, le serveur répondra avec un code d'état 500 et un message d'erreur. Finalement, le serveur est configuré pour écouter sur un port désigné par défaut, 3000, et enregistre un message pour confirmer l'état opérationnel du serveur.

Regroupement du script IronPDF

Nous pouvons maintenant exécuter le script de bundling de la boîte à fusibles.

NPM fuse-box (Comment Ça Fonctionne Pour Les Développeurs) : Figure 5 - chargeur de module fuse-box

Il va regrouper/compresser les fichiers dans un fichier séparé. Grâce au fichier généré, nous pouvons exécuter le script.

NPM fuse-box (Comment Ça Fonctionne Pour Les Développeurs) : Figure 6 - Bundle de Sortie

Ci-dessus sont les fichiers compressés générés avec l'aide de la boîte à fusibles.

NPM fuse-box (Comment Ça Fonctionne Pour Les Développeurs) : Figure 7 - Sortie Console PDF

Nous pouvons exécuter les fichiers compressés comme des fichiers Node.js normaux.

NPM fuse-box (Comment Ça Fonctionne Pour Les Développeurs) : Figure 8 - Sortie PDF

Licences

Nous avons besoin d'une clé de licence pour faire fonctionner le code sans filigrane. Les développeurs peuvent s'inscrire ici pour obtenir une licence d'essai. Vous n'avez pas besoin de fournir une carte de crédit pour en obtenir une. Lorsque vous vous inscrivez pour un essai gratuit, vous devez simplement entrer votre adresse email.

Conclusion

La combinaison de FuseBox et d'IronPDF a un impact significatif sur la production de PDF robustes sur le serveur et l'emballage des ressources sur le front end. FuseBox facilite la construction et le lancement d'applications web en regroupant et en améliorant les ressources web. Pendant ce temps, IronPDF vous permet de créer des documents directement à partir de code HTML et est efficace dans la création de PDFs.

Lorsqu'ils sont utilisés ensemble, ces outils améliorent le fonctionnement des applications en ligne et accélèrent le processus de développement. Ils le font en assurant une gestion des ressources et une création de PDFs conjointes. En utilisant IronPDF pour créer des PDFs et FuseBox pour empaqueter les choses, les développeurs peuvent construire et publier des applications qui ont des fonctionnalités cool, qui fonctionnent plus rapidement, et qui peuvent faire plus de choses avec les documents.

Iron Software offre divers types de bibliothèques qui nous aident à construire des applications facilement pour divers environnements tels que Windows, Android, MAC, Linux, etc.

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