跳過到頁腳內容
NODE 說明

NPM fuse-box(開發者的使用方法)

在任何現代 Node.js 應用程式的工具包中,捆綁包都已成為至關重要的工具。 打包工具——Webpack、Rollup、Vite——處理和打包程式碼和資源。 它們將許多不同的檔案合併成一個或幾個優化的套件,透過減少網路請求的數量來提高效能,並提供要有效載入的程式碼。 此外,大多數軟體套件已經具備程式碼分割、熱模組替換和搖樹優化等額外功能,從而提升了開發人員和最終用戶的體驗。

打包工具透過與建置工具和現代 JavaScript 標準的集成,成為可擴展和可維護應用程式的關鍵推動因素,因為它們優化了資源交付並簡化了部署工作流程。 在本文中,我們將使用 NPM fuse box 作為打包器的基準範例,並結合 IronPDF Node.js 函式庫進行測試。

FuseBox NPM 套件是速度最快、情境驅動且最具前瞻性的打包工具,讓您可以輕鬆管理和打包現代 Web 應用程式的資源。 就開發者效率而言,FuseBox 模組載入器具有簡單的配置功能,可幫助開發者快速設定並開始建立專案。 它支援所有所需的功能:即時重載、程式碼分割、搖樹優化等等,使開發變得容易,最終輸出高度優化。

NPM 保險絲盒(開發者使用指南):圖 1 - 保險絲盒

FuseBox 支援多種檔案類型:JavaScript、TypeScript、CSS 和圖片。 FuseBox 模組載入器可以很好地與流行的框架和庫整合。 除此之外,它還具有整合插件系統,可根據您的專案需求進一步擴展和自訂 FuseBox。 FuseBox 兼顧效能和易用性,將顯著加快您的開發工作流程,並針對生產環境進行了最佳化。 FuseBox 將其提升到了一個全新的水平。

若要建立和設定 FuseBox 項目,請依照下列步驟操作:

為 FuseBox 初始化一個新的 Node.js 項目

為你的專案建立一個目錄,然後在Node.js中開啟它。

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

安裝保險絲盒

如果您正在使用 fuse-box 和其他依賴項(例如 TypeScript),請安裝它們。

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

建立 FuseBox 設定檔

建立fuse.js檔案用於配置 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

這個簡單的範例展示如何在Node.js環境中配置和使用FuseBox來執行打包和開發任務。 這個範例首先從"fuse-box"套件匯入"fusebox"和"sparky",然後定義一個類別Context ,其中包含一個getConfig方法,該方法傳回一個 FuseBox 配置物件。 它配置以下設定:目標瀏覽器,將src/index.ts作為入口點,將src/index.html作為 Web 索引的範本。 最後,開發伺服器的配置可以很快實現以下最低配置選項:HMR、快取、來源映射和日誌。

下一步將使用 sparky 工具定義任務。 task('default')清理 dist 目錄,取得 FuseBox 配置,並執行開發伺服器。 同樣, task('dist')會清理 dist 目錄,但沒有任何配置,而是執行生產建置。 這種設置透過自動化建置和服務,對高效管理開發和生產非常有幫助。

建立一個簡單的 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

上面的 HTML 範本為 FuseBox 專案建立了一個簡單的頁面。 它包含字元編碼和響應式設計元資料。 佔位符$bundles由 FuseBox 動態替換為正確的腳本和樣式標籤,以確保正確載入捆綁資源,從而使 JavaScript 和 CSS 以優化的方式載入。

建立一個 TypeScript 文件

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

這行 JavaScript 程式碼設定目前網頁 body 元素的 HTML 內容。 它將替換其中的內容。帶有新標籤

標題元素。 標題中的文字顯示為"你好,FuseBox!"。 本質上,它是一種使用 JavaScript 在網頁上動態添加或更新內容的非常簡單的方法。

TypeScript 配置

產生tsconfig.json文件,用於儲存 TypeScript 設定的其他配置。

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

完成後運行程式碼。 它將應用程式託管在 localhost:4444:

NPM fuse-box(開發者使用指南):圖 2 - 控制台輸出

我們可以透過指定的本機主機連接埠查看頁面。 它會像下面的截圖一樣顯示。

! NPM 保險絲盒(開發者使用指南):圖 3 - 應用程式輸出

IronPDF簡介:PDF建立器

若要建立、修改、轉換和編輯 PDF 文檔,請使用功能強大的 Node.js 套件IronPDF 。 它被用於許多與 PDF 相關的基於程式設計的操作,例如將 HTML 轉換為 PDF 和編輯現有的 PDF。 IronPDF 對於需要動態產生和處理 PDF 的程式來說是一個非常有用的工具。 它提供了一種簡單且適應性強的解決方案,用於創建高品質的 PDF 文件。

! NPM 保險絲盒(開發者使用指南):圖 4 - IronPDF

安裝 IronPDF 軟體包

使用 NPM 安裝允許 Node.js 啟用 IronPDF 功能的軟體包。

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

帶有鐵質保險絲盒的捆綁包(PDF格式)

以下是如何連接到使用 IronPDF 的 Node.js 後端,並為前端資源配置 FuseBox 的方法。

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

此腳本會建立一個 FuseBox 實例來管理伺服器端腳本。它首先從 fuse-box 套件導入fusebox函數,然後使用特定設定對 FuseBox 進行自訂配置。 "伺服器"設定表示輸出是面向 Node.js 環境,而不是 Web 瀏覽器。 entry: &#39;src/index.ts&#39;指向啟動打包過程的主 TypeScript 檔案。

dependencies: { ignoreAllExternal: false }確保不會忽略外部依賴項,這表示如果需要,它們會被加入到捆綁包中。 watch: true功能允許在原始檔案更新時自動重建捆綁包,這有助於開發過程。 最後, cache: false會關閉緩存,從而確保最新的更新始終包含在建置中。 fuse.runDev()指令使用這些設定啟動開發伺服器。

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

該腳本建立了一個使用 Express 框架的 Node.js 伺服器,並使用 IronPDF 庫產生 PDF 檔案。 最初,它包含必要的模組:用於伺服器操作的 Express 和用於處理 PDF 任務的@ironsoftware/ironpdf 。 它會使用許可證密鑰設定 IronPDF,這對於建立 PDF 文件至關重要。 PDF 的 HTML 程式碼被宣告為一個字串,其中包含基本的樣式和使用者所需的詳細資訊。

接下來,開發一個 Express 應用程序,並建立 URL 路徑/generate-pdf 。 每當收到對該路徑的請求時,伺服器都會使用 IronPDF 的PdfDocument類別從給定的 HTML 內容產生 PDF。 然後,該 PDF 檔案會儲存在緩衝區中,並以正確的內容類型傳回給客戶端。 如果在此過程中發生錯誤,伺服器將回覆 500 狀態碼和錯誤訊息。 最終,伺服器預設為監聽指定的連接埠 3000,並記錄一條訊息以確認伺服器的運作狀態。

捆綁 IronPDF 腳本

現在我們可以運行保險絲盒捆綁腳本了。

NPM 保險絲盒(開發者使用指南):圖 5 - 保險絲盒模組載入器

它會將檔案打包/壓縮到一個單獨的檔案中。借助生成的文件,我們可以運行腳本。

NPM fuse-box(開發者使用指南):圖 6 - 輸出包

以上是藉助保險絲盒產生的壓縮文件。

NPM 保險絲盒(開發者使用指南):圖 7 - PDF 控制台輸出

我們可以將壓縮後的檔案當作普通的Node.js檔案來運作。

NPM 保險絲盒(開發者使用指南):圖 8 - PDF 輸出

授權

我們需要許可證密鑰才能使程式碼在沒有浮水印的情況下運作。 開發者可以在這裡註冊以取得試用許可證。 您無需提供信用卡即可獲得。 註冊免費試用時,您只需輸入您的電子郵件地址即可。

結論

FuseBox 和 IronPDF 的結合對在伺服器上產生強大的 PDF 以及在前端打包資源有顯著的影響。 FuseBox 透過對 Web 資源進行分組和改進,使建立和發布 Web 應用程式變得更加容易。 同時,IronPDF 允許您直接從 HTML 程式碼建立文檔,並且擅長建立 PDF。

這些工具配合使用,可以使線上應用程式運作得更好,並加快開發過程。 他們透過確保資產管理和 PDF 創建協同工作來實現這一點。 透過使用 IronPDF 產生 PDF 文件,並使用 FuseBox 打包文件,開發人員可以建立和發布具有酷炫功能、運行速度更快、並且能夠處理更多文件的應用程式。

Iron Software提供各種類型的函式庫,幫助我們輕鬆地為 Windows、Android、MAC、Linux 等各種環境建立應用程式。

Darrius Serrant
全棧軟件工程師 (WebOps)

Darrius Serrant 擁有邁阿密大學計算機科學學士學位,目前任職於 Iron Software 的全栈 WebOps 市場營銷工程師。從小就迷上編碼,他認為計算既神秘又可接近,是創意和解決問題的完美媒介。

在 Iron Software,Darrius 喜歡創造新事物,並簡化複雜概念以便於理解。作為我們的駐場開發者之一,他也自願教學生,分享他的專業知識給下一代。

對 Darrius 來說,工作令人滿意因為它被重視且有實際影響。