Эта статья нуждается в техническом обзоре. Как вы можете помочь.
Эта статья нуждается в редакционном обзоре. Как вы можете помочь.
Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.
Это экспериментальная технология, часть предложения Harmony (ECMAScript 6).
Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.
Инструкция import используется для импорта функций, объектов или примитивов, экспортированных из внешнего модуля, другого скрипта и т.д.
Внимание: Эта функциональность не реализована ни одним из браузеров. Но присутствует во многих транспиляторах, например, в Traceur Compiler, Babel или Rollup.
Синтаксис
import defaultMember from "module-name"; import * as name from "module-name"; import { member } from "module-name"; import { member as alias } from "module-name"; import { member1 , member2 } from "module-name"; import { member1 , member2 as alias2 , [...] } from "module-name"; import defaultMember, { member [ , [...] ] } from "module-name"; import defaultMember, * as name from "module-name"; import "module-name";
name
- Имя обьекта, который получит (все) импортируемые значения.
member, memberN
- Имена значений, которые будут импортированы.
defaultMember
- Имя объекта, которое получит значения экспорта по умолчанию (export default) из модуля.
alias, aliasN
- Имя обьекта, который получит импортируемые свойства.
module-name
- Имя модуля для импорта. Это имя файла.
Описание
Параметр name
это имя обьекта, который получит (все) экспортированные значения.
Параметры member
определяют отдельные (конкретные) значения, в то время как name
импортирует все значения. name
может быть функцией если в модуле реализован "экспорт по-умолчанию" вместо экспорта ряда значений (переменных, классов, объектов). Ниже приведены примеры, чтобы прояснить синтаксис.
Импорт всего содержимого модуля. Это вставит объект myModule
в текущую область видимости, содержащую все экспортированные значения из "my-module.js".
import * as myModule from "my-module";
Импорт единственного (конкретного) значения.из модуля. Эта инструкция вставит myMember
в текущую область видимости.
import {myMember} from "my-module";
Импорт нескольких значений. Оба (foo
и bar)
теперь в текущей области видимости.
import {foo, bar} from "my-module";
Импорт содержимого всего модуля, с некоторыми явно указанными методами. myModule
, foo
и bar
вставятся в данную область видимости. Внимание: foo
и myModule.foo
идентичны, как и bar
с myModule.bar
.
import MyModule, {foo, bar} from "my-module";
Импорт методов, с новым, более читаемым именем. ShortName будет в текущей области.
import {reallyReallyLongModuleMemberName as shortName} from "my-module";
Импорт содержимого модуля, без каких-либо привязок.
import "my-module.js";
Примеры
Импорт файла для помощи в обработке запроса AJAX JSON.
// file.js function getJSON(url, callback) { let xhr = new XMLHttpRequest(); xhr.onload = function () { callback(this.responseText) }; xhr.open("GET", url, true); xhr.send(); } export function getUsefulContents(url, callback) { getJSON(url, data => callback(JSON.parse(data))); } // main.js import {getUsefulContents} from "file"; getUsefulContents("https://www.example.com", data => { doSomethingUseful(data); });
характеристики
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Imports' в этой спецификации. |
Стандарт | Initial definition. |
Совместимость
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | Нет[1] | Нет[2] | Нет | Нет | Нет |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | Нет | Нет | Нет | Нет | Нет | Нет |
[1] Partial support is behind a command line flag: --harmony-modules
. See this V8 bug.
[2] See this Firefox bug.
Замечания
import
и export
в прошлом были особенностью в Netscape, но он не приобрел популярность и они были удалены в Firefox 3.5 (баг 447713).