export

Инструкция export используется для экспорта функций, объектов или примитивов из файла (или модуля).

Примечание: Эта функциональность не реализована в браузерах на данный момент, но она реализована во многих транспилерах, таких как Traceur CompilerBabel or Rollup.

Синтаксис

export { name1, name2, …, nameN };
export { variable1 as name1, variable2 as name2, …, nameN };
export let name1, name2, …, nameN; // или var
export let name1 = …, name2 = …, …, nameN; // или var, const

export default выражение;
export default function (…) { … } // или class, function*
export default function name1(…) { … } // или class, function*
export { name1 as default, … };

export * from …;
export { name1, name2, …, nameN } from …;
export { import1 as name1, import2 as name2, …, nameN } from …;
nameN
Идентификатор для экспорта (может быть импортирован (import) в другом файле (скрипте)).

Описание

Существует два типа экспорта, каждый из которых описан ниже:

  • Именованный экспорт :
    export { myFunction }; // экспорт ранее объявленной функции
    export const foo = Math.sqrt(2); // экспорт константы
  • Дефолтный экспорт (экспорт по умолчанию) (один на скрипт):
    export default function() {} // или 'export default class {}'
    // тут не ставится точка с запятой

Именованная форма более применима для экспорта нескольких величин. Во время импорта, можно будет использовать одно и то же имя, чтобы обратиться к соответствующему экспортируемому значению.

Касательно экспорта по умолчанию (default), он может быть только один для каждого отдельного модуля (файла). Дефолтный экспорт может представлять собой функцию, класс, объект или что-то другое. Это значение следует рассматривать как "основное", так как его будет проще всего импортировать.

Примеры

Использование именованного экспорта

Мы могли бы использовать следующий код в модуле:

// модуль"my-module.js"
function cube(x) {
  return x * x * x;
}
const foo = Math.PI + Math.SQRT2;
export { cube, foo };

Таким образом в другом скрипте при помощи импорта (см. import) мы могли бы получить следующее:

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

Использование export default

Если мы хотим экспортировать единственное значение или иметь резервное значение (fallback) для данного модуля, мы можем использовать export default.

// модуль"my-module.js"
export default function cube(x) {
  return x * x * x;
}

Затем, в другом скрипте можно импортировать это значение по умолчанию таким образом:

import cube from 'my-module';
console.log(cube(3)); // 27

Спецификации

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'Exports' в этой спецификации.
Стандарт Initial definition.
ECMAScript Latest Draft (ECMA-262)
Определение 'Exports' в этой спецификации.
Черновик

Совместимость с браузерами

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
exportChrome Полная поддержка 61Edge Полная поддержка 16
Полная поддержка 16
Полная поддержка 15
Отключено
Отключено From version 15: this feature is behind the Experimental JavaScript Features preference.
Firefox Полная поддержка 60
Полная поддержка 60
Нет поддержки 54 — 60
Отключено
Отключено From version 54 until version 60 (exclusive): this feature is behind the dom.moduleScripts.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 47Safari Полная поддержка 10.1WebView Android Нет поддержки НетChrome Android Полная поддержка 61Firefox Android Полная поддержка 60
Полная поддержка 60
Нет поддержки 54 — 60
Отключено
Отключено From version 54 until version 60 (exclusive): this feature is behind the dom.moduleScripts.enabled preference. To change preferences in Firefox, visit about:config.
Opera Android Полная поддержка 44Safari iOS Полная поддержка 10.1Samsung Internet Android Нет поддержки Нетnodejs ?

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.

Смотри также