Ir para o conteúdo do rodapé
AJUDA DO NODE

NPM fuse-box (Como funciona para desenvolvedores)

Um pacote (bundle) tornou-se uma ferramenta essencial no conjunto de ferramentas de qualquer aplicação Node.js moderna. Os bundlers — Webpack, Rollup, Vite — gerenciam e empacotam o código e os recursos. Eles combinam vários arquivos diferentes em um ou poucos pacotes otimizados, melhorando o desempenho ao reduzir o número de solicitações de rede e fornecendo o código para ser carregado de forma eficaz. Além disso, a maioria dos pacotes já possui recursos extras como divisão de código, substituição de módulos em tempo real e tree shaking, que melhoram a experiência tanto para o desenvolvedor quanto para o usuário final.

Os bundlers são elementos essenciais para a criação de aplicações escaláveis ​​e de fácil manutenção, graças à sua integração com ferramentas de compilação e padrões modernos de JavaScript , pois otimizam a entrega de recursos e facilitam os fluxos de trabalho de implantação. Neste artigo, usaremos o NPM Fuse Box como exemplo de referência para um bundler com a biblioteca IronPDF for Node.js

O pacote FuseBox NPM é o bundler mais rápido, orientado a contexto e inovador, permitindo que você gerencie e agrupe os recursos do seu aplicativo web moderno com facilidade. Em termos de eficiência do desenvolvedor, o carregador de módulos FuseBox possui uma configuração fácil que auxilia o desenvolvedor a configurar tudo rapidamente para começar a construir seu projeto. Ele oferece suporte a todos os recursos desejados: recarregamento em tempo real, divisão de código, tree shaking e muito mais, facilitando o desenvolvimento e otimizando significativamente o resultado final.

Caixa de fusíveis NPM (Como funciona para desenvolvedores): Figura 1 - caixa de fusíveis

O FuseBox suporta diversos tipos de arquivo: JavaScript, TypeScript, CSS e imagens. O carregador de módulos FuseBox integra-se perfeitamente com frameworks e bibliotecas populares. Além disso, possui um sistema de plugins integrado que permite ampliar e personalizar ainda mais o FuseBox de acordo com as necessidades do seu projeto. Equilibrando desempenho com facilidade de uso, o FuseBox acelerará significativamente seu fluxo de trabalho de desenvolvimento e criará um pacote otimizado para produção. FuseBox elevando tudo a um novo patamar.

Para criar e configurar um projeto FuseBox, siga estes passos:

Inicializar um novo projeto Node.js para o FuseBox

Crie um diretório para o seu projeto e, em seguida, abra-o no Node.js

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

Para instalar a caixa de fusíveis

Instale o fuse-box e outras dependências como o TypeScript, caso esteja utilizando-o.

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

Criar arquivo de configuração do FuseBox

Crie um arquivo fuse.js para configurar o 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 exemplo simples mostra a configuração e o uso do FuseBox para realizar tarefas de empacotamento e desenvolvimento em um ambiente Node.js O exemplo primeiro importa 'fusebox' e 'sparky' do pacote 'fuse-box', depois define uma classe Context com um método getConfig que retorna um objeto de configuração FuseBox. Ele configura as seguintes definições: tem como alvo o navegador, utiliza src/index.ts como ponto de entrada e src/index.html como modelo para o índice da web. Por fim, a configuração do servidor de desenvolvimento inclui as seguintes opções mínimas de configuração: HMR, cache, mapas de origem e logs, tudo de forma muito rápida.

O próximo passo será definir as tarefas usando o utilitário sparky. O comando task('default') limpa o diretório dist, obtém a configuração do FuseBox e executa o servidor de desenvolvimento. Da mesma forma, o comando task('dist') limpa o diretório dist, mas não possui nenhuma configuração e, em vez disso, executa a versão de produção. Essa configuração é bastante útil para gerenciar o desenvolvimento e a produção de forma eficiente, automatizando os processos de compilação e distribuição.

Crie um arquivo HTML simples.

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

O modelo HTML acima configura uma página simples para um projeto FuseBox. Inclui metadados de codificação de caracteres e design responsivo. O marcador de posição, $bundles, é substituído dinamicamente pelo FuseBox com as tags de script e estilo corretas para garantir que os recursos agrupados sejam carregados corretamente, permitindo que o JavaScript e o CSS sejam carregados de forma otimizada.

Crie um arquivo TypeScript

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

Esta linha de código JavaScript define o conteúdo HTML do elemento body da página web atual. Isso substituirá o conteúdo dentro da tag <body> por um novo elemento de cabeçalho <h1>. O texto no cabeçalho exibe "Olá, FuseBox!". Em essência, é uma maneira muito simples de adicionar ou atualizar conteúdo dinamicamente em uma página da web usando JavaScript.

Configuração do TypeScript

Gere um arquivo tsconfig.json para armazenar configurações adicionais das definições do TypeScript.

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

Após concluir, execute o código. Ele hospeda o aplicativo em localhost:4444:

Caixa de fusíveis NPM (Como funciona para desenvolvedores): Figura 2 - Saída do console

Podemos visualizar a página a partir da porta localhost especificada. A exibição será semelhante à captura de tela abaixo.

Caixa de fusíveis NPM (Como funciona para desenvolvedores): Figura 3 - Saída do aplicativo

Apresentando o IronPDF: Criador de PDFs

Para a criação, modificação, conversão e edição de documentos PDF, utilize o robusto pacote Node.js IronPDF . É utilizado em muitas operações de programação relacionadas a PDFs, como a conversão de HTML para PDF e a edição de PDFs já existentes. IronPDF é uma ferramenta extremamente útil para programas que precisam gerar e processar PDFs dinamicamente. Oferece uma solução simples e adaptável para criar documentos PDF de alta qualidade.

Caixa de fusíveis NPM (Como funciona para desenvolvedores): Figura 4 - IronPDF

Instale o pacote IronPDF

Use o NPM para instalar pacotes que permitam ao Node.js habilitar a funcionalidade IronPDF .

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

Pacote Fuse-Box com IronPDF

Veja como conectar-se a um backend Node.js que usa o IronPDF e configurar o FuseBox para seus recursos de front-end.

Arquivo 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

Este script estabelece uma instância do FuseBox para agrupar scripts do lado do servidor. Ele começa importando a função fusebox do pacote fuse-box e, em seguida, personaliza o FuseBox com configurações específicas. A configuração 'server' indica que a saída se destina a um ambiente Node.js , e não a um navegador web. O entry: 'src/index.ts' aponta para o arquivo TypeScript principal para iniciar o procedimento de agrupamento.

O dependencies: { ignoreAllExternal: false } garante que as dependências externas não sejam ignoradas, ou seja, elas são adicionadas ao pacote se necessário. O recurso watch: true permite a reconstrução automática do pacote sempre que os arquivos de origem são atualizados, o que auxilia no processo de desenvolvimento. Finalmente, cache: false desativa o cache, garantindo que as atualizações mais recentes estejam sempre incluídas na compilação. O comando fuse.runDev() inicia o servidor de desenvolvimento com essas configurações.

Arquivo 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 configura um servidor Node.js utilizando o framework Express para gerar PDFs com a biblioteca IronPDF . Inicialmente, inclui os módulos necessários: Express para as operações do servidor e @ironsoftware/ironpdf para lidar com tarefas em PDF. Ele configura o IronPDF com uma chave de licença, que é essencial para a criação de PDFs. O HTML do PDF é declarado como uma string, incorporando estilos e detalhes fundamentais para o usuário.

Em seguida, desenvolve-se uma aplicação Express e estabelece-se um caminho de URL /generate-pdf. Sempre que uma solicitação é recebida para este caminho, o servidor utiliza a classe PdfDocument do IronPDF para gerar um PDF a partir do conteúdo HTML fornecido. Em seguida, o PDF é armazenado em um buffer e retornado ao cliente com o tipo de conteúdo correto. Caso ocorra algum erro durante este procedimento, o servidor responderá com um código de status 500 e uma mensagem de erro. Por fim, o servidor é configurado para escutar em uma porta designada por padrão, a 3000, e registra uma mensagem para confirmar o status operacional do servidor.

Agrupando o script IronPDF

Agora podemos executar o script de agrupamento da caixa de fusíveis.

Caixa de fusíveis NPM (Como funciona para desenvolvedores): Figura 5 - carregador de módulos da caixa de fusíveis

Isso irá agrupar/minimizar os arquivos em um arquivo separado. Com a ajuda do arquivo gerado, podemos executar o script.

Caixa de fusíveis NPM (Como funciona para desenvolvedores): Figura 6 - Pacote de saída

Acima estão os arquivos minimizados gerados com a ajuda da caixa de fusíveis.

Caixa de fusíveis NPM (Como funciona para desenvolvedores): Figura 7 - Saída do console PDF

Podemos executar os arquivos minificados como arquivos Node.js normais.

Caixa de fusíveis NPM (Como funciona para desenvolvedores): Figura 8 - Saída em PDF

Licenciamento

Precisamos de uma chave de licença para que o código funcione sem marca d'água. Os desenvolvedores podem se inscrever aqui para obter uma licença de avaliação . Você não precisa fornecer um cartão de crédito para obter um. Ao se inscrever para um teste gratuito, você só precisa inserir seu endereço de e-mail.

Conclusão

A combinação do FuseBox e do IronPDF tem um impacto significativo na criação de PDFs robustos no servidor e na organização dos recursos no front-end. O FuseBox facilita a criação e o lançamento de aplicativos da web, agrupando e aprimorando os recursos da web. Entretanto, o IronPDF permite criar documentos diretamente a partir de código HTML e é eficiente na criação de PDFs.

Quando usadas em conjunto, essas ferramentas melhoram o funcionamento dos aplicativos online e aceleram o processo de desenvolvimento. Eles fazem isso garantindo que o gerenciamento de ativos e a criação de PDFs funcionem em conjunto. Ao usar o IronPDF para criar PDFs e o FuseBox para empacotar os arquivos, os desenvolvedores podem criar e lançar aplicativos com recursos interessantes, que funcionam mais rápido e oferecem mais possibilidades com os documentos.

A Iron Software oferece diversos tipos de bibliotecas que nos ajudam a criar aplicativos facilmente para vários ambientes, como Windows, Android, MAC, Linux, etc.

Darrius Serrant
Engenheiro de Software Full Stack (WebOps)

Darrius Serrant é bacharel em Ciência da Computação pela Universidade de Miami e trabalha como Engenheiro de Marketing WebOps Full Stack na Iron Software. Atraído por programação desde jovem, ele via a computação como algo misterioso e acessível ao mesmo tempo, tornando-a o meio ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim