Sitemap
Anandarafaele

Anandarafaele

Software Engineer

Trilha de Backend (JS) Pt.2

2 min readDec 15, 2025

Estou atualizando meus conhecimentos de backend e resolvi escrever vários artigos com meu próprio entendimento do que está sendo estudado.

2. Módulos no Node e Tree Shaking

No Node.js temos dois sistemas principais de módulo: CommonJS (CJS) e ECMAScript Modules (ESM).

2.1. CommonJS (CJS) — O Padrão “Clássico”

O CommonJS foi o sistema original e padrão do Node.js por muitos anos.

  • Sintaxe: Usa require() para importar módulos e module.exports para exportar.
  • Carregamento Síncrono: Quando você usa require(), o Node.js pausa a execução do arquivo atual até que o módulo seja totalmente carregado.
  • Uso: Comum em projetos Node.js mais antigos e em muitas bibliotecas publicadas no NPM.

Exemplo de Sintaxe:

// Exportando
module.exports = {
nome: "Meu Modulo CJS"
};

// Importando
const meuModulo = require('./meuModulo');

2.2. ES Modules (ESM) — O Padrão Moderno

Get Anandarafaele’s stories in your inbox

Join Medium for free to get updates from this writer.

Os ES Modules são o padrão oficial do JavaScript moderno (ES6+) e são a escolha preferida para novos projetos Node.js e TypeScript.

  • Sintaxe: Usa import ... from ... e export ....
  • Carregamento Assíncrono: As importações são carregadas de forma assíncrona, em paralelo, sem bloquear a linha de execução principal.
  • Uso: É necessário adicionar "type": "module" no seu arquivo package.json para usar esta sintaxe nativamente no Node.js.

Exemplo de Sintaxe:

// Exportando
export const nome = "Meu Modulo ESM";

// Importando
import { nome } from './meuModulo';

2.3. Otimização: O Tree-Shaking

A principal vantagem de usar ES Modules vai além da sintaxe: é a capacidade de usar uma técnica de otimização chamada Tree-Shaking (sacudir a árvore).

O tree-shaking depende de ferramentas de bundling (empacotadores de módulos), como Webpack, Rollup e Vite, para funcionar.

Como funciona na prática?

O tree-shaking otimiza o pacote final do seu código, mantendo apenas as partes dos módulos importados que estão sendo realmente usadas e removendo o “código morto” (não utilizado).

Considere o exemplo a seguir:

Arquivo: utils.js

export function somar(a, b) { return a + b; }
export function subtrair(a, b) { return a - b; }
export function multiplicar(a, b) { return a * b; } // Exportado, mas não usado

Arquivo: app.js

import { somar, subtrair } from './utils';

console.log(somar(1, 2));
// A função multiplicar() nunca é mencionada aqui.

Resultado Final:

No seu pacote de produção final, o código da função multiplicar() será automaticamente removido. O tree-shaking garante que você envie apenas o código essencial para o usuário, resultando em aplicativos mais rápidos e leves.

--

--

Anandarafaele
Anandarafaele

Written by Anandarafaele

0 followers

Software Engineer