import

Эта статья нуждается в техническом обзоре. Как вы можете помочь.

Эта статья нуждается в редакционном обзоре. Как вы можете помочь.

Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

Это экспериментальная технология, часть предложения 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";

Импорт содержимого всего модуля, с некоторыми явно указанными методами. myModulefoo и 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("http://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).

Смотри также

Метки документа и участники

 Внесли вклад в эту страницу: maxmind, torbasow, standy, vvalgis, Enclave88, kurzgame
 Обновлялась последний раз: maxmind,