This article is in need of a technical review.
This article is in need of an editorial review.
This translation is incomplete. Please help translate this article from English.
Это экспериментальная технология, часть предложения Harmony (ECMAScript 6).
Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.
Коротко
Оператор import используется для импорта функций(методов), экспортируемых из внешнего модуля, другого скрипта.
Внимание: Данный метод не реализован ни одним из браузеров. Но присутствуует во многих компиляторах, например в Traceur Compiler и ES6 Module Transpiler.
Синтакс
import 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 name , { member [ , [...] ] } from "module-name";
import "module-name" as name;
- name
- Имя обьекта, который получит импортируемые значения.
-
member, memberN - Имя экспортируемого метода, которые будут импортированы.
-
alias, aliasN - Имя обьекта, который получит импортируемые свойства.
-
module-name - Имя модуля для импорта. То есть имя файла.
Описание
Параметр name это имя обьекта, который получит экспортируемые методы. Параметры member определяют конкретные методы, в то время как name импортирует все. name может выступать в качестве функции если модуль единственный параметр по-умолчанию а не несколько. Ниже приведены примеры, чтобы уточнить синтаксис.
Импорт содержимого модуля. myModule вставится в текущую область, содержащую все экспортируемые связывания.
import myModule from "my-module.js"; import "my-module.js" as myModule; // одинаково
Импорт конкретного метода. myMember вставится в текущую область.
import {myMember} from "my-module.js";
Импорт нескольких конкретных методов. Оба (foo и bar) теперь в текущей области.
import {foo, bar} from "my-module.js";
Импорт содержимого всего модуля, с некоторыми явно указанными методами. myModule, foo и bar втавятся в данную область. Внимание: foo и myModule.foo идентичны, как и bar с myModule.bar.
import MyModule, {foo, bar} from "my-module.js";
Импорт методов, с новым, более читаемым именем. ShortName будет в текущей области.
import {reallyReallyLongModuleMemberName as shortName} from "my-module.js";
Импорт содержимого модуля, без каких-либо привязок.
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.js";
getUsefulContents("http://www.example.com", data => {
doSomethingUseful(data);
});
характеристики
| Specification | Status | Comment |
|---|---|---|
| ECMAScript 6 (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).