Da trilha de JavaScript Este conceito ainda não saiu como card do dia. ir para o card de hoje

JavaScript Módulos Intermediário

Módulos ES

Módulos ES permitem dividir o código em arquivos independentes, cada um com seu próprio escopo. Você exporta o que quer compartilhar e importa o que precisa de outros módulos. A sintaxe usa export e import, e o JavaScript moderno suporta tanto exportações nomeadas quanto uma exportação padrão (export default).

Cada módulo tem escopo próprio: variáveis e funções declaradas dentro dele não vazam para o escopo global. Isso evita conflitos de nomes e facilita a organização. Para usar módulos no Node.js, o arquivo precisa ter extensão .mjs ou o package.json deve conter "type": "module". No navegador, basta usar <script type="module">.

Além dos imports estáticos, existe o import dinâmico (import()), que carrega um módulo sob demanda e retorna uma Promise. Isso é útil para carregar código pesado apenas quando necessário, melhorando o desempenho. O import dinâmico pode ser usado em qualquer lugar do código, inclusive dentro de funções.

Neste card, você verá como criar e consumir módulos, usar exportações nomeadas e padrão, fazer import dinâmico e entender o escopo isolado de cada módulo.

Pontos-chave

  • export torna funções, objetos ou variáveis disponíveis para outros módulos.
  • import traz bindings de outro módulo para o escopo atual.
  • export default define uma exportação principal; só pode haver uma por módulo.
  • import() dinâmico retorna uma Promise e permite carregamento condicional.
  • Cada módulo tem seu próprio escopo: nada é global a menos que seja exportado.
modulos.mjs
// arquivo: math.mjs
export const PI = 3.14159;
export function soma(a, b) {
  return a + b;
}
export default function multiplica(a, b) {
  return a * b;
}

// arquivo: main.mjs
import multiplica, { PI, soma } from './math.mjs';

console.log('PI:', PI);
console.log('Soma:', soma(2, 3));
console.log('Multiplicação:', multiplica(4, 5));

// import dinâmico
async function carregar() {
  const { default: mult } = await import('./math.mjs');
  console.log('Multiplicação dinâmica:', mult(6, 7));
}
carregar();

Exercícios

  1. 1
    Fácil

    Exportando e importando uma função

    Crie um módulo saudacao.mjs que exporta uma função dizerOla(nome) retornando "Olá, [nome]!". Depois, em main.mjs, importe e use essa função para exibir a saudação para "Maria".

    Resolver
  2. 2
    Médio

    Exportação padrão e nomeada juntas

    Crie um módulo calculadora.mjs que exporta uma função padrão somar(a, b) e também exporta uma constante nomeada VERSAO = '1.0'. Em app.mjs, importe ambas e exiba "Versão 1.0: 2 + 3 = 5".

    Resolver
  3. 3
    Desafio

    Import dinâmico condicional

    Crie um módulo mensagens.mjs que exporta duas funções: dia() retornando "Bom dia!" e noite() retornando "Boa noite!". Em index.mjs, receba um argumento de linha de comando (process.argv[2]) que pode ser "dia" ou "noite". Use import dinâmico para carregar o módulo e chamar a função correspondente. Se o argumento for inválido, exiba "Período inválido".

    Resolver

Continue estudando