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
exporttorna funções, objetos ou variáveis disponíveis para outros módulos.importtraz bindings de outro módulo para o escopo atual.export defaultdefine 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.
// 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();