it-swarm.com.ru

Что такое «экспорт по умолчанию» в javascript?

Файл: SafeString.js

// Build out our basic SafeString type
function SafeString(string) {
  this.string = string;
}

SafeString.prototype.toString = function() {
  return "" + this.string;
};

export default SafeString;

Я никогда не видел export default раньше. Есть ли что-нибудь эквивалентное для export default, которое может быть проще для понимания?

440
damphat

Это часть модульной системы ES6, описано здесь . В этой документации также есть полезный пример:

Если модуль определяет экспорт по умолчанию:

export default function() { console.log("hello!") }

затем вы можете импортировать этот экспорт по умолчанию, пропустив фигурные скобки:

import foo from "foo";
foo(); // hello!

Обновление: По состоянию на июнь 2015 года система модулей определена в §15.2 , а синтаксис export, в частности, определен в - §15.2. спецификации ECMAScript 2015.

355
p.s.w.g

export default используется для экспорта одного класса, функции или примитива из файла сценария.

Экспорт также может быть записан как

export default function SafeString(string) {
  this.string = string;
}

SafeString.prototype.toString = function() {
  return "" + this.string;
};

Это используется для импорта этой функции в другой файл скрипта

Сказать в app.js, вы можете

import SafeString from './handlebars/safe-string';

Немного об экспорте

Как следует из названия, он используется для экспорта функций, объектов, классов или выражений из файлов скриптов или модулей.

tiliites.js

export function cube(x) {
  return x * x * x;
}
export const foo = Math.PI + Math.SQRT2;

Это можно импортировать и использовать как

App.js

import { cube, foo } from 'Utilities';
console.log(cube(3)); // 27
console.log(foo);    // 4.555806215962888

Или же

import * as utilities from 'Utilities';
console.log(utilities.cube(3)); // 27
console.log(utilities.foo);    // 4.555806215962888

Когда используется экспорт по умолчанию, это намного проще. Файлы сценариев просто экспортируют одну вещь. cube.js

export default function cube(x) {
  return x * x * x;
};

и используется как App.js

import Cube from 'cube';
console.log(Cube(3)); // 27
114
sudo bangbang

export default function(){} может использоваться, когда функция не имеет имени. В файле может быть только один экспорт по умолчанию. Альтернативой является именованный экспорт.

Это page подробно описывает export default, а также другие подробности о модулях, которые я нашел очень полезными.

67
Greg Gum

Как объяснено на этом страница MDN

Существует два различных типа экспорта: именованные и стандартные. Вы можете иметь несколько именованных экспортов на модуль, но только один экспорт по умолчанию [...] Именованные экспорты полезны для экспорта нескольких значений. Во время импорта обязательно использовать то же имя соответствующего объекта. Но экспорт по умолчанию может быть импортирован с любым именем

Например:

let myVar; export default myVar = 123; // in file my-module.js

import myExportedVar from './my-module' //  we have the freedom to use 'import myExportedVar' instead of 'import myVar' because myVar was defined as default export

console.log(myExportedVar);        // will log 123
6
manfall19