Параметры экспорта модуля ES6+ javascript
Я видел публичный экспорт модулей ES6, выполненный двумя из следующих способов:
// method 1
export var getAnswer = function () { return 'forty two'; };
// method 2
export default function () { return 'forty two'; };
- оба из них действительны?
- если да, то почему они оба существуют?
- существуют ли другие допустимые параметры для экспорта модулей с использованием синтаксиса ES6?
Я удивлен, что не смог найти ответ с моим googlefu. Я беспокоюсь только с модулями ES6,не CommonJS, RequireJS, AMD, узел, так далее.
3 ответа:
через год и несколько позже, вот лучшая информация, которую я нашел по этому вопросу.
существует 4 вида экспорта. Вот примеры использования каждого из них, а также некоторые импорта, которые их используют:
Экспорт Синтаксис
// 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";
Синтаксис Импорт
// 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";
оба они действительны.
метод 1 обеспечивает названы экспорт. Ключ здесь в том, что вы можете экспортировать более одной вещи. Это следует использовать вместо экспорта объекта с несколькими свойствами. При импорте модуля с именованным экспортом используйте
import {a, b} from c
.Метод 2 обеспечивает по умолчанию экспорт. Экспорт по умолчанию может быть только один. Это в первую очередь используется при экспорте одной вещи, как
class
, или a одинfunction
что вы ожидаете, что будет использоваться без какой-либо дополнительной поддержки. При импорте модуля с экспортом по умолчанию используйтеimport d from c
.обратите внимание, что вы можете использовать оба! так что если у вас есть основная, основная функция с горсткой иногда используемых помощников, вы можете
export
помощники, иexport default
первичный. Когда вы импортируете модуль и вам нужны оба вида экспорта, используйтеimport d, {a, b} from c
.еще один вариант заключается в том, что вы можете получить именованный экспорт, перечислив их в конце ваш модуль, вот так:
export {a,b,c}
. Вы также можете переименовать ихexport {a as $a, b as c}
.я получил все это от в этой статье, который является лучшим источником для актуальной информации о модуле es6, которую я смог найти.
- оба из них действительны?
нет,
export function () { return answer; };
недопустимо, либо вы используете значение по умолчанию, либо вы добавляете имя к этому объявлению функции.
- Если да, то почему они оба существуют?
они не :)
- существуют ли другие допустимые параметры для экспорта модулей с использованием синтаксиса ES6?
вы можете увидеть много допустимых вариантов здесь: https://github.com/eslint/espree/pull/43