Exportações Default vs. Nomeadas
Parte da seção Programação Orientada a Objetos do Journey de JavaScript da Coddy — lição 10 de 56.
Em módulos JavaScript, você tem duas maneiras principais de exportar seu código: named exports e default exports.
Named Exports permitem que você exporte múltiplos valores de um módulo:
// math.js
export function add(a, b) {
return a + b;
}
export function subtract(a, b) {
return a - b;
}Ao importar exportações nomeadas, você deve usar exatamente os mesmos nomes dentro de chaves:
// app.js
import { add, subtract } from './math.js';
console.log(add(5, 3)); // 8
console.log(subtract(10, 4)); // 6Se você precisar renomear uma importação nomeada, use a palavra-chave as para criar um apelido:
// app.js
import { add as sum, subtract as minus } from './math.js';
console.log(sum(5, 3)); // 8
console.log(minus(10, 4)); // 6Exportações Padrão permitem que você exporte um único valor principal de um módulo:
// user.js
const user = {
name: 'John',
age: 30
};
export default user;Ao importar um default export, você pode usar qualquer nome que desejar sem o uso de chaves:
// app.js
import person from './user.js';
console.log(person.name); // 'John'Quando usar cada um? Use exportações nomeadas quando um módulo fornece múltiplas utilidades relacionadas (ex: uma coleção de funções auxiliares). Use uma exportação padrão quando um módulo tem um propósito primário ou valor principal (ex: uma classe, um componente ou um objeto de configuração).
Você pode combinar ambos os tipos de exportações em um único módulo:
// vehicle.js
export const wheels = 4;
export const doors = 4;
const car = {
brand: 'Toyota',
model: 'Corolla'
};
export default car;E importe-os juntos:
// app.js
import myCar, { wheels, doors } from './vehicle.js';
console.log(myCar.brand); // 'Toyota'
console.log(wheels); // 4Desafio
FácilVocê tem dois arquivos. Sua tarefa é configurar as exportações em calculator.js e as importações em main.js.
- Em
calculator.js: Exportecalculatecomo default esquarecomo nomeada - Em
main.js: Importe ambas as funções corretamente
Os testes verificarão:
- Exportação default usada para
calculate - Exportação nomeada usada para
square - Ambas as importações funcionam corretamente
Folha de consulta
Exportações Nomeadas (Named Exports) — exporte e importe múltiplos valores pelo nome exato:
// math.js
export function add(a, b) { return a + b; }
export function subtract(a, b) { return a - b; }
// app.js
import { add, subtract } from './math.js';
import { add as sum } from './math.js'; // apelido com "as"Exportações Padrão (Default Exports) — exporte um valor principal; importe com qualquer nome, sem chaves:
// user.js
export default { name: 'John', age: 30 };
// app.js
import person from './user.js';Combinando Ambos — a importação padrão vem primeiro, as importações nomeadas entre chaves:
// vehicle.js
export const wheels = 4;
export default { brand: 'Toyota', model: 'Corolla' };
// app.js
import myCar, { wheels } from './vehicle.js';Quando usar cada um: use exportações nomeadas para múltiplos utilitários relacionados; use uma exportação padrão para o valor principal único de um módulo (classe, componente, configuração).
Experimente você mesmo
// TODO: Importe ambas as funções aqui de calculator.js
// Teste
console.log(calculate(10, 5, '+')); // Deve exibir 15
console.log(square(4)); // Deve exibir 16Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Programação Orientada a Objetos
1Objetos e a Palavra-chave this
Revisão Rápida: ObjetosAdicionando Métodos a ObjetosEntendendo a Palavra-chave thisFunções ConstrutorasA Palavra-chave newDesafio de Recapitulação7Herança e a palavra-chave extends
HerançaA relação "é um"A palavra-chave extendsO método super()Herdando propriedades e métodosDesafio de recapitulação10Polimorfismo
O que é Polimorfismo?Sobrescrevendo Métodos HerdadosUsando superDesafio de Recapitulação13Composição vs. Herança
A relação "tem um" vs. "é um"Os limites da herança profundaConstruindo objetos2Organizando o Código
O que são Módulos?Exportando com exportImportando com importExportações Default vs. Nomeadas5Encapsulamento e Acesso
EncapsulamentoCampos de Classe Públicos e PrivadosMétodos PrivadosDesafio de Recapitulação8Organizando Código POO
Organizar Classes em Módulos11Projeto: Um Renderizador de Formas
Configuração: Classe Shape e ExportaçãoHerança da Classe Circle14Sistema de Gerenciamento de Biblioteca
Projetando a BibliotecaClasse Livro com Composição