import

by 1 contributor:

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";

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

Смотри также

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

Contributors to this page: kurzgame
Обновлялась последний раз: kurzgame,
Скрыть боковую панель