Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
60
rated 0 times [  62] [ 2]  / answers: 1 / hits: 34914  / 10 Years ago, mon, august 25, 2014, 12:00:00

I've seen public exports of ES6 modules done in both of the following ways:



// method 1
export var getAnswer = function () { return 'forty two'; };

// method 2
export default function () { return 'forty two'; };



  1. Are both of these valid?

  2. If so, why do they both exist?

  3. Are there other valid options for module exports using ES6 syntax?



I'm surprised I haven't been able to find the answer with my googlefu. I'm concerned only with ES6 modules, not CommonJS, RequireJS, AMD, Node, etc.


More From » syntax

 Answers
60

A year and some later, here is the best information I've found on the subject.



There are 4 types of exports. Here are usage examples of each, along with some imports that use them:



Export Syntax



// default exports
export default 42;
export default {};
export default [];
export default (1 + 2);
export default foo;
export default function () {}
export default class {}
export default function foo () {}
export default class foo {}

// variables exports
export var foo = 1;
export var foo = function () {};
export var bar;
export let foo = 2;
export let bar;
export const foo = 3;
export function foo () {}
export class foo {}

// named exports
export {};
export {foo};
export {foo, bar};
export {foo as bar};
export {foo as default};
export {foo as default, bar};

// exports from
export * from foo;
export {} from foo;
export {foo} from foo;
export {foo, bar} from foo;
export {foo as bar} from foo;
export {foo as default} from foo;
export {foo as default, bar} from foo;
export {default} from foo;
export {default as foo} from foo;


Import Syntax



// default imports
import foo from foo;
import {default as foo} from foo;

// named imports
import {} from foo;
import {bar} from foo;
import {bar, baz} from foo;
import {bar as baz} from foo;
import {bar as baz, xyz} from foo;

// glob imports
import * as foo from foo;

// mixing imports
import foo, {baz as xyz} from foo;
import foo, * as bar from foo;

// just import
import foo;


Source.


[#69665] Thursday, August 21, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
pranavrorys

Total Points: 466
Total Questions: 87
Total Answers: 115

Location: Barbados
Member since Sun, Nov 27, 2022
2 Years ago
;