Zum Fußzeileninhalt springen
NODE-HILFE

NPM fuse-box (Wie es für Entwickler funktioniert)

Ein Bundle ist zu einem kritischen Werkzeug im Toolkit jeder modernen Node.js-Anwendung geworden. Bundler — Webpack, Rollup, Vite — verarbeiten und paketieren Code und Assets. Sie fusionieren viele verschiedene Dateien in eines oder wenige optimierte Bundles und verbessern die Leistung, indem sie die Anzahl der Netzwerkaufrufe reduzieren und den Code effizient laden. Außerdem bieten die meisten Bundles bereits Extras wie Code Splitting, Hot Module Replacement und Tree Shaking, die das Erlebnis für Entwickler und Endbenutzer erhöhen.

Bundler sind durch ihre Integration mit Build-Tools und modernen JavaScript-Standards entscheidend für skalierbare und wartbare Anwendungen, da sie die Ressourcenauslieferung optimieren und Deployments reibungslos gestalten. In diesem Artikel verwenden wir die NPM fuse box als Benchmark-Beispiel eines Bundlers mit der IronPDF Node.js-Bibliothek.

Das FuseBox-NPM-Paket ist der schnellste, kontextgesteuerte und fortschrittlichste Bundler und ermöglicht die mühelose Verwaltung und das Zusammenstellen der Assets Ihrer modernen Webanwendung. In Bezug auf die Effizienz für Entwickler hat der FuseBox-Modul-Loader eine einfache Konfiguration, die dem Entwickler hilft, schnell alles einzurichten, um mit dem Aufbau seines Projekts zu beginnen. Es unterstützt alle gewünschten Funktionen: Live-Neuladen, Code-Splitting, Tree-Shaking usw., was die Entwicklung erleichtert und das Endergebnis hochoptimiert macht.

NPM fuse-box (Wie es für Entwickler funktioniert): Abbildung 1 - fuse-box

FuseBox unterstützt viele Dateitypen: JavaScript, TypeScript, CSS und Bilder. Der FuseBox-Modul-Loader integriert sich gut mit gängigen Frameworks und Bibliotheken. Zusätzlich verfügt es über ein integriertes Plug-in-System, das FuseBox weiter erweitern und nach den Bedürfnissen Ihres Projekts anpassen kann. Durch die Ausgewogenheit von Leistung und Benutzerfreundlichkeit wird FuseBox Ihren Entwicklungsworkflow erheblich beschleunigen und optimiert für die Produktion Bündel bereitstellen. FuseBox hebt es auf eine ganz neue Ebene.

Um ein FuseBox-Projekt zu erstellen und zu konfigurieren, folgen Sie diesen Schritten:

Initialisieren Sie ein neues Node.js-Projekt für FuseBox

Erstellen Sie ein Verzeichnis für Ihr Projekt und öffnen Sie es dann in Node.js.

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

Um fuse-box zu installieren

Installieren Sie fuse-box und andere Abhängigkeiten wie TypeScript, wenn Sie es verwenden.

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

FuseBox-Konfigurationsdatei erstellen

Erstellen Sie eine fuse.js-Datei zur Konfiguration von 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

Dieses einfache Beispiel ist die FuseBox-Konfiguration und -Verwendung zur Durchführung von Bundle- und Entwicklungsaufgaben in einer Node.js-Umgebung. Das Beispiel importiert zunächst 'fusebox' und 'sparky' aus dem 'fuse-box'-Paket und definiert dann eine Klasse Context mit einer Methode getConfig, die ein FuseBox-Konfigurationsobjekt zurückgibt. Es konfiguriert die folgenden Einstellungen: es zielt auf den Browser ab, es nimmt src/index.ts als Einstiegspunkt und src/index.html als Vorlage für das Web-Index. Schließlich wird die Konfiguration des Entwicklungsservers mit den folgenden minimalen Konfigurationsoptionen mitgeliefert: HMR, Caching, Source Maps und sehr schnelle Protokollierung.

Der nächste Schritt wird die Definition von Aufgaben mit dem Sparky-Dienstprogramm sein. Die task('default') reinigt das dist-Verzeichnis, holt die FuseBox-Konfiguration und führt den Entwicklungsserver aus. Ähnlich reinigt die task('dist') das dist-Verzeichnis, hat jedoch keine Konfiguration und führt stattdessen den Produktionsbuild aus. Das Setup ist ziemlich hilfreich, um Entwicklung und Produktion effizient zu verwalten, indem der Build und der Serve automatisiert werden.

Erstellen Sie eine einfache HTML-Datei

<!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

Das obige HTML-Template richtet eine einfache Seite für ein FuseBox-Projekt ein. Es beinhaltet Zeichenkodierung und Metadaten für responsives Design. Der Platzhalter $bundles wird dynamisch von FuseBox durch die richtigen Script- und Stil-Tags ersetzt, um sicherzustellen, dass gebündelte Assets korrekt geladen werden, sodass JavaScript und CSS auf optimierte Weise geladen werden.

Erstellen Sie eine TypeScript-Datei

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

Diese JavaScript-Codezeile setzt den HTML-Inhalt des Body-Elements der aktuellen Webseite. Es wird den Inhalt innerhalb des <body>-Tags mit einem neuen <h1>-Überschriftselement ersetzen. Der Text in der Überschrift zeigt "Hallo, FuseBox!" an. Im Grunde ist es eine sehr einfache Möglichkeit, Inhalte dynamisch auf einer Webseite mit JavaScript hinzuzufügen oder zu aktualisieren.

TypeScript-Konfiguration

Erstellen Sie eine tsconfig.json-Datei, um zusätzliche Konfigurationseinstellungen von TypeScript zu speichern.

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

Sobald dies erledigt ist, führen Sie den Code aus. Es hostet die Anwendung auf localhost:4444:

NPM fuse-box (Wie es für Entwickler funktioniert): Abbildung 2 - Konsolenausgabe

Wir können die Seite vom angegebenen localhost-Port aus betrachten. Es wird wie im folgenden Screenshot gezeigt.

NPM fuse-box (Wie es für Entwickler funktioniert): Abbildung 3 - Anwendungsoutput

Einführung von IronPDF: PDF-Ersteller

Für die Erstellung, Modifikation, Umwandlung und Bearbeitung von PDF-Dokumenten verwenden Sie das robuste Node.js-Paket IronPDF. Es wird in vielen programmierbezogenen Operationen im Zusammenhang mit PDFs verwendet, wie der Umwandlung von HTML in PDF und der Bearbeitung bereits vorhandener PDFs. IronPDF ist ein äußerst nützliches Tool für Programme, die dynamisch PDFs generieren und verarbeiten müssen. Es bietet eine einfache und anpassungsfähige Lösung, um hochwertige PDF-Dokumente zu erstellen.

NPM fuse-box (Wie es für Entwickler funktioniert): Abbildung 4 - IronPDF

Installiere IronPDF-Paket

Verwenden Sie NPM, um Pakete zu installieren, die es Node.js ermöglichen, IronPDF-Funktionalität zu aktivieren.

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

Fuse-Box-Bundle mit IronPDF

Hier ist, wie man sich mit einem Node.js-Backend verbindet, das IronPDF verwendet, und FuseBox für Ihre Frontend-Assets konfiguriert.

Fuse.js-Datei

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

Dieses Skript erstellt eine FuseBox-Instanz, um serverseitige Skripte zu gruppieren. Es beginnt mit dem Import der fusebox-Funktion aus dem fuse-box-Paket und passt dann FuseBox mit bestimmten Einstellungen an. Die 'server'-Einstellung zeigt an, dass die Ausgabe für eine Node.js-Umgebung gedacht ist, nicht für einen Web-Browser. Das entry: 'src/index.ts' verweist auf die primäre TypeScript-Datei, um das Bündelungsverfahren zu initiieren.

Die dependencies: { ignoreAllExternal: false } stellt sicher, dass externe Abhängigkeiten nicht übersehen werden, was bedeutet, dass sie dem Bündel hinzugefügt werden, wenn nötig. Das watch: true-Feature ermöglicht den automatischen Neuaufbau des Bundles, wann immer die Quelldateien aktualisiert werden, was im Entwicklungsprozess hilft. Schließlich deaktiviert cache: false das Caching und sorgt dafür, dass die neuesten Updates immer Teil des Builds sind. Der fuse.runDev()-Befehl startet den Entwicklungsserver mit diesen Einstellungen.

Index.ts-Datei

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

Dieses Skript erstellt einen Node.js-Server unter Verwendung des Express-Frameworks zum Erstellen von PDFs mit der IronPDF-Bibliothek. Zunächst werden die notwendigen Module aufgenommen: Express für die Operationen des Servers und @ironsoftware/ironpdf zur Verarbeitung von PDF-Aufgaben. Es richtet IronPDF mit einem Lizenzschlüssel ein, was für das Erstellen von PDFs unerlässlich ist. Das HTML für das PDF wird als Zeichenkette deklariert und beinhaltet grundlegendes Styling und Benutzerinformationen.

Anschließend wird eine Express-Anwendung entwickelt und ein URL-Pfad /generate-pdf erstellt. Wann immer eine Anfrage für diesen Pfad eingeht, verwendet der Server die PdfDocument-Klasse von IronPDF, um aus dem angegebenen HTML-Inhalt ein PDF zu erstellen. Dieses PDF wird dann in einem Puffer gespeichert und mit dem richtigen Inhaltstyp an den Client zurückgegeben. Sollte ein Fehler während dieses Verfahrens auftreten, antwortet der Server mit einem 500-Statuscode und einer Fehlermeldung. Letztendlich ist der Server so eingerichtet, dass er auf einem bestimmten Port, standardmäßig 3000, lauscht und eine Meldung aufnimmt, um den Betriebsstatus des Servers zu bestätigen.

Das IronPDF-Skript bündeln

Jetzt können wir das fuse box-Bundling-Skript ausführen.

NPM fuse-box (Wie es für Entwickler funktioniert): Abbildung 5 - fuse-box-Modul-Loader

Es wird die Dateien in eine separate Datei bündeln/minimieren. Mit der Hilfe der generierten Datei können wir das Skript ausführen.

NPM fuse-box (Wie es für Entwickler funktioniert): Abbildung 6 - Ausgabebundle

Oben sind die mit Hilfe der fuse box generierten minimierten Dateien aufgeführt.

NPM fuse-box (Wie es für Entwickler funktioniert): Abbildung 7 - PDF-Konsolenausgabe

Wir können die minimierten Dateien als normale Node.js-Dateien ausführen.

NPM fuse-box (Wie es für Entwickler funktioniert): Abbildung 8 - PDF-Ausgabe

Lizenzierung

Wir benötigen einen Lizenzschlüssel, damit der Code ohne Wasserzeichen funktioniert. Entwickler können sich hier für eine Testlizenz registrieren. Sie müssen keine Kreditkarte hinterlegen, um eine zu erhalten. Wenn Sie sich für eine kostenlose Testversion anmelden, müssen Sie nur Ihre E-Mail-Adresse eingeben.

Abschluss

Die Kombination von FuseBox und IronPDF hat einen erheblichen Einfluss auf die Erstellung starker PDFs auf dem Server und die Verpackung von Assets auf der Frontend-Seite. FuseBox erleichtert den Aufbau und die Bereitstellung von Web-Apps durch Gruppierung und Verbesserung von Web-Ressourcen. In der Zwischenzeit ermöglicht IronPDF das direkte Erstellen von Dokumenten aus HTML-Code und ist gut im Erstellen von PDFs.

Wenn sie zusammen verwendet werden, verbessern diese Tools die Funktionsweise von Online-Apps und beschleunigen den Entwicklungsprozess. Sie tun dies, indem sie sicherstellen, dass die Verwaltung von Assets und das Erstellen von PDFs zusammenarbeiten. Indem sie IronPDF zum Erstellen von PDFs und FuseBox zum Verpacken von Dingen verwenden, können Entwickler Apps erstellen und veröffentlichen, die coole Funktionen, schnellere Arbeitsweisen und mehr Leistungsfähigkeit mit Dokumenten bieten.

Iron Software bietet verschiedene Arten von Bibliotheken an, die uns helfen, Anwendungen einfach für verschiedene Umgebungen wie Windows, Android, MAC, Linux usw. zu erstellen.

Darrius Serrant
Full-Stack-Software-Ingenieur (WebOps)

Darrius Serrant hat einen Bachelor-Abschluss in Informatik von der University of Miami und arbeitet als Full-Stack-WebOps-Marketing-Ingenieur bei Iron Software. Seit seiner Jugend vom Programmieren angezogen, sah er die Informatik als sowohl mysteriös als auch zugänglich, was es zum perfekten Medium für Kreativität und Problemlösung ...

Weiterlesen