Saltar al pie de página
AYUDA DE NODE

NPM fuse-box (Cómo funciona para desarrolladores)

Un paquete se ha convertido en una herramienta crítica en el kit de herramientas de cualquier aplicación moderna de Node.js. Agrupadores — Webpack, Rollup, Vite — manejan y empaquetan código y recursos. Fusionan muchos archivos diferentes en uno o unos pocos paquetes optimizados, mejorando el rendimiento al reducir el número de solicitudes de red y proporcionando el código para que se cargue de manera efectiva. Además, la mayoría de los paquetes ya tienen extras como división de código, reemplazo de módulo en caliente y sacudida de árbol que mejoran la experiencia tanto para el desarrollador como para el usuario final.

Los agrupadores son facilitadores críticos de aplicaciones escalables y mantenibles a través de su integración con herramientas de construcción y estándares modernos de JavaScript porque optimizan la entrega de recursos y suavizan los flujos de trabajo de despliegue. En este artículo, utilizaremos el NPM fuse box como un ejemplo de referencia de un agrupador con la biblioteca IronPDF Node.js.

El paquete FuseBox de NPM es el agrupador más rápido, impulsado por el contexto y más visionario, que te permite gestionar y agrupar los recursos de tu aplicación web moderna con facilidad. En cuanto a la eficiencia del desarrollador, el cargador de módulos FuseBox tiene una configuración simple que ayuda al desarrollador a configurarlo rápidamente para comenzar a construir su proyecto. Admite todas las funciones deseadas: recarga en vivo, división de código, sacudida de árbol, y así sucesivamente, lo que facilita el desarrollo y el resultado final es altamente optimizado.

NPM fuse-box (Cómo Funciona Para Desarrolladores): Figura 1 - fuse-box

FuseBox admite muchos tipos de archivos: JavaScript, TypeScript, CSS e imágenes. El cargador de módulos FuseBox se integra muy bien con marcos y bibliotecas populares. Además de esto, cuenta con un sistema de plugins integrado que extenderá y personalizará aún más FuseBox según las necesidades de tu proyecto. Equilibrando el rendimiento con la facilidad de uso, FuseBox acelerará significativamente tu flujo de trabajo de desarrollo y agrupará optimizado para producción. FuseBox llevándolo a un nivel completamente nuevo.

Para crear y configurar un proyecto FuseBox, sigue estos pasos:

Inicializar un nuevo proyecto Node.js para FuseBox

Crea un directorio para tu proyecto y luego ábrelo en Node.js.

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

Instalar caja de fusibles

Instala fuse-box y otras dependencias como TypeScript si lo estás utilizando.

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

Crear archivo FuseBox Config

Crea un archivo fuse.js para configurar 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

Este sencillo ejemplo es la configuración y uso de FuseBox para realizar tareas de agrupación y desarrollo en un entorno Node.js. El ejemplo primero importa 'fusebox' y 'sparky' del paquete 'fuse-box', luego define una clase Context con un método getConfig que devuelve un objeto de configuración de FuseBox. Configura los siguientes ajustes: apunta al navegador, toma src/index.ts como punto de entrada y src/index.html como plantilla para el índice web. Finalmente, la configuración del servidor de desarrollo viene con las siguientes opciones de configuración mínimas: HMR, caché, mapas de origen y registros muy rápidamente.

El siguiente paso será definir tareas usando la utilidad sparky. La tarea('por defecto') limpia el directorio dist, obtiene la configuración de FuseBox y ejecuta el servidor de desarrollo. De manera similar, la tarea('dist') limpia el directorio dist pero no tiene configuración y en su lugar ejecuta la construcción de producción. La configuración es bastante útil para gestionar el desarrollo y la producción de manera eficiente al automatizar la construcción y el servicio.

Crear un archivo HTML sencillo

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

La plantilla HTML anterior configura una página simple para un proyecto FuseBox. Incluye codificación de caracteres y metadatos de diseño responsivo. El marcador de posición, $bundles, es reemplazado dinámicamente por FuseBox con las etiquetas de script y estilo correctas para garantizar que los activos empaquetados se carguen correctamente, permitiendo que JavaScript y CSS se carguen de manera optimizada.

Crear un archivo TypeScript

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

Esta línea de código JavaScript establece el contenido HTML del elemento cuerpo de la página web actual. Sustituirá el contenido dentro de la etiqueta <body> por un nuevo elemento de encabezado <h1>. El texto en el encabezado muestra "Hola, FuseBox!". En esencia, es una forma muy simple de agregar o actualizar contenido dinámicamente en una página web usando JavaScript.

Configuración de TypeScript

Genera un archivo tsconfig.json para contener configuraciones adicionales de los ajustes de TypeScript.

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

Una vez hecho, ejecuta el código. Aloja la aplicación en localhost:4444:

NPM fuse-box (Cómo Funciona Para Desarrolladores): Figura 2 - Consola de Salida

Podemos ver la página desde el puerto localhost dado. Se mostrará como la captura de pantalla de abajo.

NPM fuse-box (Cómo Funciona Para Desarrolladores): Figura 3 - Resultado de la Aplicación

Presentación de IronPDF: Creador de PDF

Para la creación, modificación, conversión y edición de documentos PDF, utiliza el robusto paquete Node.js IronPDF. Se utiliza en muchas operaciones basadas en programación relacionadas con PDF, como convertir HTML a PDF y editar PDFs preexistentes. IronPDF es una herramienta altamente útil para programas que necesitan generar y procesar PDFs dinámicamente. Ofrece una solución simple y adaptable para crear documentos PDF de alta calidad.

NPM fuse-box (Cómo Funciona Para Desarrolladores): Figura 4 - IronPDF

Instalar el paquete IronPDF

Usa NPM para instalar paquetes que permitan a Node.js habilitar la capacidad de IronPDF.

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

Fuse-Box Bundle con IronPDF

Aquí está cómo conectar a un back-end de Node.js que utiliza IronPDF y configurar FuseBox para tus recursos de front-end.

Archivo fusible.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

Este script establece una instancia de FuseBox para agrupar scripts del lado del servidor. Comienza importando la función fusebox del paquete fuse-box y luego adapta FuseBox con configuraciones particulares. El ajuste 'server' indica que la salida está destinada a un entorno Node.js, no a un navegador web. El entrada: 'src/index.ts' señala al archivo principal de TypeScript para iniciar el procedimiento de agrupación.

El dependencias: { ignorarTodoExterno: false } asegura que las dependencias externas no se pasen por alto, lo que significa que se agregan al paquete si es necesario. La función observar: true permite la reconstrucción automática del paquete cada vez que se actualizan los archivos fuente, lo que ayuda en el proceso de desarrollo. Finalmente, caché: false desactiva el almacenamiento en caché, garantizando que las actualizaciones más recientes siempre sean parte de la construcción. El comando fuse.runDev() lanza el servidor de desarrollo con estas configuraciones.

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

Este script establece un servidor Node.js utilizando el marco Express para generar PDFs con la biblioteca IronPDF. Inicialmente, incluye los módulos necesarios: Express para las operaciones del servidor y @Iron Software/ironpdf para manejar tareas de PDF. Configura IronPDF con una clave de licencia, que es esencial para crear PDFs. El HTML para el PDF se declara como una cadena, incorporando estilos fundamentales y detalles para el usuario.

A continuación, se desarrolla una aplicación Express, y se establece un camino URL /generate-pdf. Siempre que se recibe una solicitud para este camino, el servidor emplea la clase PdfDocument de IronPDF para producir un PDF del contenido HTML dado. Este PDF luego se almacena en un búfer y se devuelve al cliente con el tipo de contenido correcto. Si surge un error durante este procedimiento, el servidor responderá con un código de estado 500 y un mensaje de error. En última instancia, el servidor está configurado para escuchar en un puerto designado por defecto, 3000, y registra un mensaje para confirmar el estado operativo del servidor.

Publicación del script IronPDF

Ahora podemos ejecutar el script de agrupación de fuse box.

NPM fuse-box (Cómo Funciona Para Desarrolladores): Figura 5 - Cargador de módulos de fuse-box

Agrupará/minimizará los archivos en un archivo separado. Con la ayuda del archivo generado, podemos ejecutar el script.

NPM fuse-box (Cómo Funciona Para Desarrolladores): Figura 6 - Paquete de Salida

Arriba están los archivos minimizados generados con la ayuda de la caja de fusibles.

NPM fuse-box (Cómo Funciona Para Desarrolladores): Figura 7 - Consola de Salida de PDF

Podemos ejecutar los archivos minimizados como archivos normales de Node.js.

NPM fuse-box (Cómo Funciona Para Desarrolladores): Figura 8 - Salida de PDF

Licencias

Necesitamos una clave de licencia para que el código funcione sin una marca de agua. Los desarrolladores pueden registrarse aquí para obtener una licencia de prueba. No tienes que proporcionar una tarjeta de crédito para obtener una. Cuando te registras para una prueba gratuita, solo necesitas ingresar tu dirección de correo electrónico.

Conclusión

La combinación de FuseBox e IronPDF tiene un impacto significativo en la creación de PDFs fuertes en el servidor y la agrupación de activos en el front-end. FuseBox facilita la construcción y lanzamiento de aplicaciones web agrupando y mejorando los recursos web. Mientras tanto, IronPDF te permite crear documentos directamente desde el código HTML y es bueno para crear PDFs.

Cuando se usan juntos, estas herramientas mejoran el funcionamiento de las aplicaciones en línea y aceleran el proceso de desarrollo. Lo hacen asegurándose de que la gestión de recursos y la creación de PDFs funcionen juntas. Al usar IronPDF para hacer PDFs y FuseBox para empaquetar cosas, los desarrolladores pueden construir y sacar aplicaciones que tienen características geniales, funcionan más rápido y pueden hacer más con documentos.

Iron Software ofrece diversos tipos de bibliotecas que nos ayudan a construir aplicaciones fácilmente para varios entornos como Windows, Android, MAC, Linux, etc.

Darrius Serrant
Ingeniero de Software Full Stack (WebOps)

Darrius Serrant tiene una licenciatura en Ciencias de la Computación de la Universidad de Miami y trabaja como Ingeniero de Marketing WebOps Full Stack en Iron Software. Atraído por la programación desde joven, vio la computación como algo misterioso y accesible, convirtiéndolo en el ...

Leer más