¿Qué es "exportar por defecto" en javascript?


Archivo: SafeString.js

// Build out our basic SafeString type
function SafeString(string) {
  this.string = string;
}

SafeString.prototype.toString = function() {
  return "" + this.string;
};

export default SafeString;

Nunca he visto export default antes. ¿Hay algo equivalente para export default que pueda ser más fácil de entender?

Author: giannis christofakis, 2014-01-14

3 answers

Es parte del sistema de módulos ES6, descrito aquí. Hay un ejemplo útil en esa documentación, también:

Si un módulo define una exportación predeterminada:

export default function() { console.log("hello!") }

Luego puede importar esa exportación predeterminada omitiendo las llaves:

import foo from "foo";
foo(); // hello!

Actualización: A partir del 2 de febrero de 2015, el sistema de módulos se define en §15.2 y la sintaxis export en particular se define en §15.2.3 del proyecto de especificación ES6. Por supuesto, como todavía es un borrador, esto puede cambiar en el futuro.

 271
Author: p.s.w.g,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-30 14:03:19

export default se utiliza para exportar una sola clase, función o primitiva desde un archivo de script.

La exportación también se puede escribir como

export default function SafeString(string) {
  this.string = string;
}

SafeString.prototype.toString = function() {
  return "" + this.string;
};

Esto se usa para importar esta función en otro archivo de script

Decir en aplicación.js , usted puede

import SafeString from './handlebars/safe-string';

Un poco sobre la exportación

Como su nombre indica, se utiliza para exportar funciones, objetos, clases o expresiones desde archivos de script o módulos

Utiliites.js

export function cube(x) {
  return x * x * x;
}
export const foo = Math.PI + Math.SQRT2;

Esto se puede importar y utilizado como

App.js

import { cube, foo } from 'Utilities';
console.log(cube(3)); // 27
console.log(foo);    // 4.555806215962888

O

import * as utilities from 'Utilities';
console.log(utilities.cube(3)); // 27
console.log(utilities.foo);    // 4.555806215962888

Cuando se usa export default, esto es mucho más simple. Los archivos de script solo exportan una cosa. cubo.js

export default function cube(x) {
  return x * x * x;
};

Y se utiliza como App.js

import Cube from 'cube';
console.log(Cube(3)); // 27
 69
Author: sudo bangbang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-13 08:47:56

export default function(){} se puede utilizar cuando la función no tiene nombre. Solo puede haber una exportación predeterminada en un archivo. La alternativa es una exportación con nombre.

Esta página describe export default en detalle, así como otros detalles sobre los módulos que encontré muy útiles.

 51
Author: Greg0,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-25 20:08:38