export

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 CompilerBabel 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

 

Etiquetas y colaboradores del documento

 Colaboradores en esta página: hmorv, guumo, Jdiaz, SphinxKnight, teoli, Scipion
 Última actualización por: hmorv,