В чем разница между этими методами импорта ES6?

javascript ecmascript-6 babeljs

634 просмотра

3 ответа

21007 Репутация автора

В чем разница между этими методами импорта?

Способ 1:

import {sum, pi} from "lib/math";

Способ 2:

import exp, {pi, e} from "lib/mathplusplus";

Документы es2015 показали эти два примера, и я не могу понять назначение фигурных скобок. Кажется, что все вещи, перечисленные после импорта, будут все равно назначены windowобъекту.

Документы для справки: https://babeljs.io/docs/learn-es2015/

Автор: Don P Источник Размещён: 08.12.2015 05:36

Ответы (3)


11 плюса

30377 Репутация автора

Решение

модули могут экспортировать несколько вещей. Модули также могут иметь один экспорт по умолчанию.

import exp from "somelib";

Это назначает экспорт по умолчаниюsomelib для переменной exp.

import {a, b} from "somelib";

Это присваивает именованные экспорты не по умолчанию aи bлокальным переменным aи b.

import exp, {a, b} from "somelib";

Назначает экспорт по умолчанию в expи именованный экспорт в aи b.

import * as somelib from "somelib";

Принимает все именованные экспорты somelib и назначает их как объект локальной переменной somelib, что означает, что вы будете иметь somelib.a, somelib.bи т. Д.

Это очень хороший ресурс по теме: http://www.2ality.com/2014/09/es6-modules-final.html

Автор: Brandon Размещён: 08.12.2015 05:43

1 плюс

16610 Репутация автора

В данном случае expэто defaultимпортируемый модуль с именем exp. piи eобернуты в фигурные скобки, потому что они не по умолчанию.

В этом примере вы определили модуль по умолчанию:

export default function(x) {
  return x + x;
}

И импорт выполняется без фигурных скобок, называя его как угодно:

import double from 'mymodule';
double(2); // 4
Автор: Sterling Archer Размещён: 08.12.2015 05:44

1 плюс

16980 Репутация автора

Модули могут exportдвумя разными способами. Они могут использовать defaultили просто выполнить стандартнуюexport

export default function exp(value, power) {}
export const pi = 3.14159

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

import exp, {pi} from "lib/mathplusplus";
Автор: Kyeotic Размещён: 08.12.2015 06:15
Вопросы из категории :
32x32