Przejdź do treści stopki
POMOC NODE

NPM fuse-box (Jak działa dla deweloperów)

Pakiet stał się kluczowym narzędziem w zestawie narzędzi każdej nowoczesnej aplikacji Node.js. Narzędzia do pakowania — Webpack, Rollup, Vite — obsługują i pakują kod oraz zasoby. Łączą one wiele różnych plików w jeden lub kilka zoptymalizowanych pakietów, poprawiając wydajność poprzez zmniejszenie liczby żądań sieciowych i zapewnienie efektywnego ładowania kodu. Ponadto większość pakietów zawiera już dodatkowe funkcje, takie jak dzielenie kodu, wymiana modułów na gorąco i tree shaking, które poprawiają komfort pracy programisty i użytkownika końcowego.

Pakiety są kluczowymi elementami umożliwiającymi tworzenie skalowalnych i łatwych w utrzymaniu aplikacji dzięki integracji z narzędziami do kompilacji i nowoczesnymi standardami JavaScript, ponieważ optymalizują dostarczanie zasobów i usprawniają procesy wdrażania. W tym artykułe wykorzystamy NPM fuse box jako przykładowy bundler z biblioteką IronPDF for Node.js.

Pakiet FuseBox NPM to najszybszy, oparty na kontekście i najbardziej przyszłościowy bundler, który pozwala z łatwością zarządzać zasobami nowoczesnych aplikacji internetowych i łączyć je w pakiety. Jeśli chodzi o wydajność programisty, moduł ładujący FuseBox charakteryzuje się prostą konfiguracją, która pomaga programistom w szybkim przygotowaniu środowiska do rozpoczęcia pracy nad projektem. Obsługuje wszystkie pożądane funkcje: przeładowywanie na żywo, dzielenie kodu, tree shaking i tak dalej, co ułatwia programowanie i zapewnia wysoką optymalizację końcowego wyniku.

NPM fuse-box (Jak to działa dla programistów): Rysunek 1 - fuse-box

FuseBox obsługuje wiele typów plików: JavaScript, TypeScript, CSS oraz obrazy. Moduł ładujący FuseBox doskonale integruje się z popularnymi frameworkami i bibliotekami. Ponadto posiada zintegrowany system wtyczek, który pozwoli na dalsze rozszerzenie i dostosowanie FuseBox do potrzeb Twojego projektu. Łącząc wydajność z łatwością użytkowania, FuseBox znacznie przyspieszy proces tworzenia oprogramowania i zapewni pakiet zoptymalizowany pod kątem produkcji. FuseBox przenosi to na zupełnie nowy poziom.

Aby utworzyć i skonfigurować projekt FuseBox, wykonaj następujące czynności:

Skonfiguruj nowy projekt Node.js dla FuseBox

Utwórz katalog dla swojego projektu, a następnie otwórz go w Node.js.

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

Aby zainstalować fuse-box

Zainstaluj fuse-box i inne zależności, takie jak TypeScript, jeśli z nich korzystasz.

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

Utwórz plik konfiguracyjny FuseBox

Utwórz plik fuse.js do konfigurowania 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

Ten prosty przykład przedstawia konfigurację i sposób użycia FuseBox do wykonywania zadań związanych z pakowaniem i programowaniem w środowisku Node.js. Przykład najpierw importuje 'fusebox' i 'sparky' z pakietu 'fuse-box', a następnie definiuje klasę Context z metodą getConfig, która zwraca obiekt konfiguracji FuseBox. Konfiguruje następujące ustawienia: celuje w przeglądarkę, przyjmuje src/index.ts jako punkt wejścia i src/index.html jako szablon dla indeksu sieciowego. Wreszcie, konfiguracja serwera deweloperskiego obejmuje następujące minimalne opcje konfiguracyjne: HMR, buforowanie, mapy źródłowe i logi bardzo szybko.

Kolejnym krokiem będzie zdefiniowanie zadań przy użyciu narzędzia sparky. Funkcja task('default') czyści katalog dist, pobiera konfigurację FuseBox i uruchamia serwer deweloperski. Podobnie, task('dist') czyści katalog dist, ale nie posiada konfiguracji i zamiast tego uruchamia budowę produkcyjną. To rozwiązanie jest bardzo pomocne w efektywnym zarządzaniu rozwojem i produkcją poprzez automatyzację kompilacji i wdrażania.

Utwórz prosty plik 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>
<!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

Powyższy szablon HTML tworzy prostą stronę dla projektu FuseBox. Obejmuje to metadane dotyczące kodowania znaków i responsywnego projektowania. Placeholder $bundles jest dynamicznie zastępowany przez FuseBox odpowiednimi znacznikami skryptów i stylów, aby zapewnić, że zgrupowane zasoby są prawidłowo ładowane, pozwalając JavaScript i CSS ładować się w zoptymalizowany sposób.

Utwórz plik TypeScript

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

Ta linia kodu JavaScript ustawia zawartość HTML elementu body bieżącej strony internetowej. Zastąpi zawartość wewnątrz znacznika <body> nowym elementem nagłówkowym <h1>. Tekst w nagłówku brzmi: "Hello, FuseBox!". W istocie jest to bardzo prosty sposób na dynamiczne dodawanie lub aktualizowanie treści na stronie internetowej przy użyciu JavaScript.

Konfiguracja TypeScript

Generuj plik tsconfig.json do przechowywania dodatkowej konfiguracji ustawień TypeScript.

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

Po zakończeniu uruchom kod. Aplikacja jest hostowana na localhost:4444:

NPM fuse-box (Jak to działa dla programistów): Rysunek 2 - Wydruk Konsoli

Możemy wyświetlić stronę z podanego portu localhost. Będzie to wyglądało tak, jak na poniższym zrzucie ekranu.

NPM fuse-box (Jak to działa dla programistów): Rysunek 3 - Wydruk Aplikacji

Przedstawiamy IronPDF: PDF Creator

Do tworzenia, modyfikacji, konwersji i edycji dokumentów PDF wykorzystaj solidny pakiet Node.js IronPDF. Jest wykorzystywany w wielu operacjach programistycznych związanych z plikami PDF, takich jak konwersja HTML do PDF oraz edycja istniejących plików PDF. IronPDF to niezwykle przydatne narzędzie dla programów, które muszą dynamicznie generować i przetwarzać pliki PDF. Oferuje proste i elastyczne rozwiązanie do tworzenia wysokiej jakości dokumentów PDF.

NPM fuse-box (Jak to działa dla programistów): Rysunek 4 - IronPDF

Zainstaluj pakiet IronPDF

Użyj NPM, aby zainstalować pakiety umożliwiające Node.js korzystanie z funkcji IronPDF.

npm i @ironsoftware/ironpdf

Pakiet Fuse-Box z IronPDF

Oto jak połączyć się z backendem Node.js korzystającym z IronPDF i skonfigurować FuseBox dla zasobów front-endowych.

Plik 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

Ten skrypt ustanawia instancję FuseBox do grupowania skryptów po stronie serwera. Rozpoczyna od importu funkcji fusebox z pakietu fuse-box, a następnie dostosowuje FuseBox do szczególnych ustawień. Ustawienie "server" oznacza, że wynik jest przeznaczony dla środowiska Node.js, a nie dla przeglądarki internetowej. entry: 'src/index.ts' wskazuje na główny plik TypeScript, aby rozpocząć procedurę grupowania.

Funkcja dependencies: { ignoreAllExternal: false } zapewnia, że zewnętrzne zależności nie są pomijane, co oznacza, że są dodawane do pakietu, jeśli są potrzebne. Funkcja watch: true pozwala na automatyczne przebudowanie pakietu za każdym razem, gdy pliki źródłowe są aktualizowane, co pomaga w procesie rozwoju. Na końcu, cache: false wyłącza buforowanie, gwarantując, że najnowsze aktualizacje są zawsze częścią budowy. Komenda fuse.runDev() uruchamia serwer deweloperski z tymi ustawieniami.

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

Ten skrypt tworzy serwer Node.js wykorzystujący framework Express do generowania plików PDF za pomocą biblioteki IronPDF. Początkowo zawiera niezbędne moduły: Express do obsługi serwera oraz @ironsoftware/ironpdf do obsługi zadań PDF. Konfiguruje IronPDF za pomocą klucza licencyjnego, który jest niezbędny do tworzenia plików PDF. Kod HTML dla pliku PDF jest zadeklarowany jako ciąg znaków, zawierający podstawowe style i szczegóły dla użytkownika.

Następnie, opracowywana jest aplikacja Express, a ścieżka URL /generate-pdf jest ustanawiana. Za każdym razem, gdy otrzymywane jest żądanie dla tej ścieżki, serwer używa klasy PdfDocument IronPDF do wygenerowania PDF z podanej treści HTML. Ten plik PDF jest następnie zapisywany w buforze i zwracany do klienta z prawidłowym typem zawartości. W przypadku wystąpienia błędu podczas tej procedury serwer odpowie kodem statusu 500 i komunikatem o błędzie. Ostatecznie serwer jest domyślnie skonfigurowany do nasłuchiwania na wyznaczonym porcie 3000 i rejestruje komunikat potwierdzający stan operacyjny serwera.

Pakiet skryptów IronPDF

Teraz możemy uruchomić skrypt do tworzenia pakietów skrzynek bezpiecznikowych.

NPM fuse-box (Jak to działa dla programistów): Rysunek 5 - loader modułowy fuse-box

Pliki zostaną połączone/zminimalizowane w oddzielny plik. Za pomocą wygenerowanego pliku możemy uruchomić skrypt.

NPM fuse-box (Jak to działa dla programistów): Rysunek 6 - Zgrupowany Wydruk

Powyżej znajdują się zminimalizowane pliki wygenerowane przy pomocy fuse box.

NPM fuse-box (Jak to działa dla programistów): Rysunek 7 - Wydruk Konsoli PDF

Zminifikowane pliki możemy uruchamiać jak zwykłe pliki Node.js.

NPM fuse-box (Jak to działa dla programistów): Rysunek 8 - Wydruk PDF

Licencjonowanie

Potrzebujemy klucza licencyjnego, aby kod działał bez znaku wodnego. Programiści mogą zarejestrować się tutaj, aby uzyskać Licencję Trial. Nie musisz podawać danych karty kredytowej, aby ją otrzymać. Aby zarejestrować się na bezpłatną wersję próbną, wystarczy podać swój adres e-mail.

Wnioski

Połączenie FuseBox i IronPDF ma znaczący wpływ na tworzenie solidnych plików PDF na serwerze i pakowanie zasobów w interfejsie użytkownika. FuseBox ułatwia tworzenie i uruchamianie aplikacji internetowych poprzez grupowanie i ulepszanie zasobów internetowych. Z kolei IronPDF pozwala tworzyć dokumenty bezpośrednio z kodu HTML i świetnie sprawdza się przy tworzeniu plików PDF.

W połączeniu narzędzia te poprawiają działanie aplikacji internetowych i przyspieszają proces tworzenia oprogramowania. Osiągają to poprzez zapewnienie, że zarządzanie zasobami i tworzenie plików PDF współdziałają ze sobą. Korzystając z IronPDF do tworzenia plików PDF oraz FuseBox do pakowania plików, programiści mogą tworzyć i udostępniać aplikacje, które mają fajne funkcje, działają szybciej i oferują więcej możliwości w zakresie obsługi dokumentów.

Iron Software oferuje różnego rodzaju biblioteki, które pomagają nam w łatwym tworzeniu aplikacji dla różnych środowisk, takich jak Windows, Android, MAC, Linux itp.

Darrius Serrant
Inżynier oprogramowania Full Stack (WebOps)

Darrius Serrant posiada tytuł licencjata z informatyki z Uniwersytetu Miami i pracuje jako Full Stack WebOps Marketing Engineer w Iron Software. Już od młodych lat zainteresował się kodowaniem, postrzegając informatykę jako zarówno tajemniczą, jak i dostępną, co czyni ją doskonałym medium dla kreatywności ...

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie