Opcje eksportu modułu ES6+ javascript

Widziałem publiczny eksport modułów ES6 dokonywany na dwa z następujących sposobów:

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

// method 2
export default function () { return 'forty two'; };
    Czy oba są ważne? Jeśli tak, to dlaczego oba istnieją?
  1. Czy istnieją inne ważne opcje eksportu modułów przy użyciu składni ES6?

Jestem zaskoczony, że nie udało mi się znaleźć odpowiedzi z moim googlepu. Martwię się tylko O moduły ES6, Nie CommonJS, RequireJS, AMD, Node, itp.

Author: kdbanman, 2014-08-26

3 answers

Rok i kilka później, Oto najlepsze informacje, jakie znalazłem na ten temat.

Istnieją 4 rodzaje eksportu. Oto przykłady użycia każdego z nich, wraz z niektórymi importami, które ich używają:

Składnia Eksportu

// 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 Składni

// 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";

Źródło.

 169
Author: kdbanman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-23 19:53:36

Oba są ważne.

Metoda 1 dostarcza nazwanego eksportu. Kluczem jest to, że możesz eksportować więcej niż jedną rzecz. Powinno to być używane zamiast eksportowania obiektu o wielu właściwościach. Gdy importujesz moduł o nazwie exports, użyj import {a, b} from c.

Metoda 2 zapewnia domyślny eksport. Eksport może być tylko jeden. Jest on używany głównie podczas eksportowania pojedynczej rzeczy, takiej jak class lub pojedynczej function, której spodziewasz się używany bez dodatkowego wsparcia. Gdy importujesz moduł z domyślnym eksportem, użyj import d from c.

Zauważ, że możesz używać obu! więc jeśli masz główną, podstawową funkcję z garstką okazjonalnie używanych pomocników, możesz export pomocników i export default podstawową. Gdy importujesz moduł i potrzebujesz obu rodzajów eksportu, użyj import d, {a, b} from c.

Inną opcją jest to, że możesz uzyskać nazwy eksportów, wymieniając je na końcu twojego modułu, Tak: export {a,b,c}. Możesz także zmienić ich nazwy export {a as $a, b as c}.

Otrzymałem to wszystko z tego artykułu , który jest najlepszym źródłem aktualnych informacji o module es6, jakie udało mi się znaleźć.

 38
Author: Sean McMillan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-19 14:47:30
    Czy oba są ważne?

Nie, export function () { return answer; }; jest niepoprawne, albo używasz domyślnej, albo dodajesz nazwę do deklaracji funkcji.

    Jeśli tak, to dlaczego oba istnieją?

Nie:)

  1. Czy istnieją inne ważne opcje eksportu modułów przy użyciu składni ES6?

Możesz zobaczyć wiele ważnych opcji tutaj: https://github.com/eslint/espree/pull/43

 3
Author: caridy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-28 19:18:45