跳至页脚内容
NODE 帮助

NPM fuse-box(开发者如何使用)

捆绑器已成为任何现代 Node.js 应用程序工具包中的关键工具。 捆绑器——Webpack、Rollup、Vite 处理和打包代码及资产。 它们将许多不同的文件合并为一个或几个优化的捆绑包,通过减少网络请求次数并提供有效加载的代码来提高性能。 此外,大多数捆绑包已经具有代码分割、热模块替换和树摇动等额外功能,从而提升开发者和最终用户的体验。

捆绑器通过与构建工具和现代 JavaScript 标准的集成,优化资源交付和平稳的部署工作流程,从而成为可扩展和可维护应用程序的重要支持者。 在本文中,我们将使用 NPM fuse box 作为与 IronPDF Node.js 库捆绑的基准示例。

FuseBox NPM 包是速度最快、上下文驱动和最前瞻性的捆绑器,让您可以轻松管理和捆绑现代网络应用程序的资产。 关于开发人员效率,FuseBox 模块加载器具有易于配置的特点,可以帮助开发人员快速设置项目。 它支持所有期望的功能:实时重载、代码分割、树摇动等,使得开发简单且最终输出高度优化。

NPM fuse-box(开发人员如何使用):图 1 - fuse-box

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

安装 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

此简单示例是 FuseBox 的配置和使用,以便在 Node.js 环境中执行捆绑和开发任务。 示例首先从 'fuse-box' 包中引入 'fusebox' 和 'sparky',然后定义一个类 Context,包含一个返回 FuseBox 配置对象的方法 getConfig。 它配置了以下设置:目标为浏览器,它采用 src/index.ts 作为入口点,并将 src/index.html 作为网络索引的模板。 最后,开发服务器的配置包括以下最小配置选项: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 代码行设置当前网页主体元素的 HTML 内容。 它将用一个新的 <h1> 标题元素替换 <body> 标记内的内容。 标题中的文字显示为“Hello, 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 fuse-box(开发人员如何使用):图 3 - 应用程序输出

介绍 IronPDF:PDF 创建工具

要创建、修改、转换和编辑 PDF 文档,请使用强大的 Node.js 包 IronPDF。 它用于许多与 PDF 相关的编程操作,例如将 HTML 转换为 PDF 和编辑现有 PDF。 IronPDF 是一个对于需要动态生成和处理 PDF 的程序非常有用的工具。 它提供了一种简单且可适应的解决方案来创建高质量的 PDF 文档。

NPM fuse-box(开发人员如何使用):图 4 - IronPDF

安装IronPDF包

使用 NPM 安装允许 Node.js 启用 IronPDF 功能的包。

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

使用 IronPDF 的 Fuse-Box 捆绑

以下是如何连接使用 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: 'src/index.ts' 指向主 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 脚本

现在我们可以运行 fuse box 捆绑脚本。

NPM fuse-box(开发人员如何使用):图 5 - fuse-box 模块加载器

将文件捆绑/压缩成单独的文件。在生成的文件的帮助下,我们可以运行脚本。

NPM fuse-box(开发人员如何使用):图 6 - 输出捆绑

以上是通过 fuse box 生成的压缩文件。

NPM fuse-box(开发人员如何使用):图 7 - PDF 控制台输出

我们可以像正常的 Node.js 文件一样运行压缩文件。

NPM fuse-box(开发人员如何使用):图 8 - PDF 输出

许可

我们需要许可证密钥才能使代码在没有水印的情况下工作。 开发人员可以在此注册以获取试用许可证。 您无需提供信用卡即可获得。 当您注册免费试用时,只需输入您的电子邮件地址。

结论

FuseBox 和 IronPDF 的组合对在服务器上制作强大的 PDF 和在前端打包资产产生了重大影响。 FuseBox 通过分组和改进网络资源使构建和启动网络应用程序变得更容易。 同时,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 来说,他的工作令人满意,因为它被重视并产生真正的影响。