La declaración export es usada para exportar funciones, objetos o tipos de dato primitivos a partir de un archivo (o módulo).
Note: Esta característica no ha sido implementada de forma nativa todavía . Está implementada en algunos transpiladores, como Traceur Compiler, Babel o Rollup.
Sintaxis
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 a ser exportado ( es posible importarlo via import en otro script ).
Descripción
Existen dos tipos diferentes de export , cada uno corresponde a la siguiente sintaxis.
Export con nombre:
export { myFunction }; // exporta la función previamente declarada
export const foo = Math.sqrt(2); // exporta una constante
Exports por defecto ( solo uno por script ):
export default function() {} // exporta la clase {} por defecto
// el punto y coma no se usa en este tipo de export
Los export con nombre son útiles cuando se necesitan exportar múltiples valores. Durante el import será posible referirse al valor correspondiente.
Sobre el export default, solo es posible realizar un export por módulo. Un export default puede ser una función, una classe, un objeto o cualquier otra cosa. Este valor viene a ser considerado como el "principal" valor a exportar , ya que será el más fácil de importar.
Ejemplos
Usando exports con nombre
En el módulo, podremos usar el siguiente código:
// module "my-module.js"
export function cube(x) {
return x * x * x;
}
const foo = Math.PI + Math.SQRT2;
export { foo };
De esta forma, en otro script , podemos tener:
import { cube, foo } from 'my-module';
console.log(cube(3)); // 27
console.log(foo); // 4.555806215962888
Usando el export default
Si queremos exportar un solo valor o tener uno por defecto para nuestro módulo, podemos usar un export default:
// module "my-module.js"
export default function cube(x) {
return x * x * x;
}
De esta forma la importación de un export default será sumamemte sencilla:
// module "my-module.js"
import cube from 'my-module';
console.log(cube(3)); // 27
Especificaciones:
Specification | Status | Comment |
---|---|---|
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 |
Compatiblidad en navegadores
import
- ES6 in Depth: Modules, Hacks blog post by Jason Orendorff
- Axel Rauschmayer's book: "Exploring JS: Modules"