We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

La declaración export es usada para exportar funciones, objetos o tipos de dato primitivos a partir de un archivo (o módulo).

 

Nota: Esta característica está implementada nativamente solamente en Safari y Chrome en este momento. Está implementada en muchos transpiladores, tales como Typescript, BabelTraceur Compiler y ES6 Module Transpiler, y en empaquetadores como Rollup y Webpack.

Sintaxis 

export { name1, name2, …, nameN };
export { variable1 as name1, variable2 as name2, …, nameN };
export let name1, name2, …, nameN; // también var
export let name1 = …, name2 = …, …, nameN; // también var, const

export default expression;
export default function (…) { … } // también class, function*
export default function name1(…) { … } // también 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.

  • Exports con nombre:
// exporta la función previamente declarada
export { myFunction }; 

// exporta una constante
export const foo = Math.sqrt(2);
  • Exports por defecto (function):
export default function() {}
  • Exports por defecto (class):
export default class {}

Los export con nombre son útiles cuando se necesitan exportar múltiples valores. Durante el import, es obligatorio usar el mismo nombre que el correspondiente objeto.

Pero un export por defecto puede ser importado con cualquier nombre, por ejemplo:

export default k = 12; // en el archivo test.js 

import m from './test' 
// notese que tenemos la libertad de usar import m en lugar de import k, porque k era el export por defecto 
console.log(m); // escribirá 12

Sólo puede haber un export por defecto.

La siguiente sintaxis no exporta un export por defecto del módulo importado:

export * from …;

Si necesita exportar por defecto, escriba lo siguiente en su lugar:

import mod from "mod";
export default mod;

Ejemplos

Usando exports con nombre

En el módulo, podremos usar el siguiente código:

// module "my-module.js"
function cube(x) {
  return x * x * x;
}
const foo = Math.PI + Math.SQRT2;
export { cube, 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 por defecto

Si queremos exportar un solo valor o tener uno por defecto para nuestro módulo, podemos usar un export por defecto:

// 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:

import cube from 'my-module';
console.log(cube(3)); // 27

Nótese que no es posible usar var, let o const con export default

Especificaciones:

Especificación Estado Comentario
ECMAScript 2015 (6th Edition, ECMA-262)
La definición de 'Exports' en esta especificación.
Standard Definición inicial.
ECMAScript Latest Draft (ECMA-262)
La definición de 'Exports' en esta especificación.
Draft  

Compatiblidad en navegadores

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Soporte básico61

16

151

60

54 — 602

No4710.1
FeatureAndroid webviewChrome para AndroidEdge mobileFirefox para AndroidOpera AndroidiOS SafariSamsung Internet
Soporte básico No61 Si

60

54 — 602

4710.1 No

1. From version 15: this feature is behind the Experimental JavaScript Features preference.

2. From version 54 until version 60 (exclusive): this feature is behind the dom.moduleScripts.enabled preference. To change preferences in Firefox, visit about:config.

Vea también

 

Etiquetas y colaboradores del documento

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