Sobes.tech
Junior

O que são módulos ES?

sobes.tech IA

Resposta da IA

Os módulos ES são a forma padrão de organizar o código em JavaScript, baseados na sintaxe import e export.

Principais características:

  • Padrão: Parte da especificação ECMAScript, suportada pela maioria dos navegadores modernos e ambientes de execução como Node.js.
  • Gestão explícita de dependências: Os módulos indicam claramente quais os valores que exportam e quais os valores que importam de outros módulos.
  • Estrutura estática: As dependências dos módulos são determinadas na fase de compilação (ou análise), não em tempo de execução. Isto permite às ferramentas de análise estática, como bundlers (Webpack, Rollup), otimizar o código.
  • Isolamento: Cada variável, função ou classe declarada dentro de um módulo é, por padrão, local a esse módulo. Para serem acessíveis de fora, devem ser explicitamente exportadas.
  • Suporte à assíncronia: Os módulos podem ser carregados de forma assíncrona nos navegadores, sem bloquear o carregamento da página.

Sintaxe:

  • Exportação:
    // app.js
    export const myVariable = 123; // Exportação nomeada
    export function myFunction() { // Exportação nomeada
      console.log('Olá do módulo!');
    }
    export default class MyClass { // Exportação padrão
      constructor() {
        console.log('Instância de MyClass criada');
      }
    }
    
  • Importação:
    // main.js
    import { myVariable, myFunction } from './app.js'; // Importação nomeada
    import MyDefaultClass from './app.js'; // Importação padrão
    
    console.log(myVariable); // 123
    myFunction(); // Olá do módulo!
    const instance = new MyDefaultClass(); // Instância de MyClass criada
    

Comparação com CommonJS (Node.js):

Característica Módulos ES CommonJS
Sintaxe import, export require, module.exports, exports
Dependências Estáticas (definidas antes da execução) Dinâmicas (definidas em tempo de execução)
Carregamento Assíncrono (no navegador) Síncrono
this na raiz undefined module.exports
Suporte Navegadores, Node.js (por padrão desde a versão 13.2, via a flag --experimental-modules até então) Principalmente Node.js

O uso de módulos ES é a abordagem recomendada para o desenvolvimento frontend moderno devido à sua padronização, melhor suporte pelas ferramentas e capacidade de análise estática.