¿Cuál es exactamente la diferencia entre los dos? He visto a personas usar:
function foo () { ... } export default foo;Y he visto:
function bar () { ... } export bar;Además, ¿por qué usarías uno sobre el otro?
Lo más fácil es ver en qué se compilan los tres estilos diferentes de importación/exportación de ES6 en CommonJS.
// Three different export styles export foo; export default foo; export = foo; // The three matching import styles import {foo} from 'blah'; import foo from 'blah'; import * as foo from 'blah';Aproximadamente compila a:
exports.foo = foo; exports['default'] = foo; module.exports = foo; var foo = require('blah').foo; var foo = require('blah')['default']; var foo = require('blah');(La salida real del compilador puede diferir)
Si su necesidad es exportar varios objetos, vaya con exportaciones con nombre (sin palabra clave predeterminada).
function x1(){}; function x2(){}; export {x1},{x2}; //my-module.js import {x1},{x2} from 'my-module';de lo contrario, para una sola exportación, la exportación predeterminada funciona bien
export default function x1() {}; import x1 from 'my-module';