Что такое "экспорт по умолчанию" в 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, которые легче понять?

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

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

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

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

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

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

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

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

Utiliites.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

При использовании экспорта по умолчанию это намного проще. script файлы просто экспортируют одну вещь. cube.js

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

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

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

Ответ 3

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

На этой странице подробно описывается export default, а также другие подробности о модулях, которые я считаю очень полезными.

Ответ 4

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

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

Например:

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

Ответ 5

По моему мнению, важен экспорт по умолчанию, который МОЖЕТ быть импортирован с ЛЮБОМ именем!

если есть файл foo.js, который экспортирует по умолчанию:

export default function foo(){}