Tradução em progresso.
O export é usado para exportar funções, objetos ou valores primitivos de um arquivo (ou módulo).
Observação: Por enquanto esse recurso não está implementado nativamente. Ele é implementado em vários transpiladores, tais como Traceur Compiler, Babel ou Rollup.
Syntax
export { name1, name2, …, nameN }; export { variable1 as name1, variable2 as name2, …, nameN }; export let name1, name2, …, nameN; // also var export let name1 = …, name2 = …, …, nameN; // also var, const export default expression; export default function (…) { … } // also class, function* export default function name1(…) { … } // also class, function* export { name1 as default, … }; export * from …; export { name1, name2, …, nameN } from …; export { import1 as name1, import2 as name2, …, nameN } from …;
nameN
- Identificador para ser exportado (assim ele pode ser importado via
import
em outro script).
Descrição
Há dois diferentes tipos de exportar, cada tipo corresponde à algum na síntaxe acima:
- Exportações nomeadas:
export { myFunction }; // exporta uma função definida anteriormente export const foo = Math.sqrt(2); // exporta uma constante
- Exportação padrão (pode ser feita apenas uma por script):
export default function() {} // ou 'export default class {}'
Exportações nomeadas são úteis para exportar vários valores. Durante a importação, alguém vai ser capaz de usar o mesmo nome para referir ao valor correspondente.
Mas a exportação padrão só pode ser feita uma vez em cada módulo, aceitando qualquer tipo de valor, recusando o uso de var
, let
ou const
.
Exemplos
Usando exportações nomeadas
Nesse módulo poderiamos usar o seguinte código:
// módulo "my-module.js" function cube(x) { return x * x * x; } const foo = Math.PI + Math.SQRT2; export { cube, foo };
Desta maneira, em outro script (cf. import
), nós poderiamos usar:
import { cube, foo } from 'my-module'; console.log(cube(3)); // 27 console.log(foo); // 4.555806215962888
Usando a exportação padrão
Se queremos exportar um valor sozinho ou obter um valor de reserva para o nosso módulo, nós poderiamos usar export default
:
// módulo "my-module.js" export default function cube(x) { return x * x * x; }
Daí em outro script podemos usar:
import cube from 'my-module'; console.log(cube(3)); // 27
Especificações
Especificação | Estado | Comentário |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Exports' in that specification. |
Standard | Initial definition. |
ECMAScript 2017 Draft (ECMA-262) The definition of 'Exports' in that specification. |
Draft |
Compatibilidade
Recurso | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suporte básico | Não suportado | Não suportado | Não suportado | Não suportado | Não suportado |
Recurso | Android | Chrome (Android) | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suporte básico | Não suportado | Não suportado | Não suportado | Não suportado | Não suportado | Não suportado |
Veja também
import
- ES6 in Depth: Modules, Hacks blog post by Jason Orendorff
- Axel Rauschmayer's book: "Exploring JS: Modules"