Menu
Coddy logo textTech

Default против именованных экспортов

Часть раздела Объектно-ориентированное программирование путешествия по JavaScript на Coddy. Урок 10 из 56.

В модулях JavaScript есть два основных способа экспортировать свой код: именованные экспорты и экспорты по умолчанию.

Именованные экспорты позволяют экспортировать несколько значений из модуля:

// math.js
export function add(a, b) {
    return a + b;
}
export function subtract(a, b) {
    return a - b;
}

При выполнении import named export необходимо использовать точно такие же имена внутри фигурных скобок:

// app.js
import { add, subtract } from './math.js';

console.log(add(5, 3));      // 8
console.log(subtract(10, 4)); // 6

Если вам нужно переименовать импорт named, используйте ключевое слово as, чтобы создать alias:

// app.js
import { add as sum, subtract as minus } from './math.js';

console.log(sum(5, 3));   // 8
console.log(minus(10, 4)); // 6

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

// user.js
const user = {
  name: 'John',
  age: 30
};

export default user;

При импорте default export можно использовать любое имя без фигурных скобок:

// app.js
import person from './user.js';

console.log(person.name); // 'John'

Когда что использовать? Используй named экспорты, когда модуль предоставляет несколько связанных утилит (например, набор вспомогательных функций). Используй default экспорт, когда модуль имеет одно основное назначение или основное значение (например, класс, компонент или объект конфигурации).

Вы можете объединить both типа экспорта в одном модуле:

// vehicle.js
export const wheels = 4;
export const doors = 4;

const car = {
  brand: 'Toyota',
  model: 'Corolla'
};

export default car;

И импортируй их вместе:

// app.js
import myCar, { wheels, doors } from './vehicle.js';

console.log(myCar.brand);  // 'Toyota'
console.log(wheels);       // 4
challenge icon

Задание

Легко

У вас есть два файла. Ваша задача — настроить Export в calculator.js и Import в main.js.

  1. В calculator.js: экспортировать calculate как default, а square как named
  2. В main.js: правильно выполнить Import обеих функций

Проверки будут проверять:

  • Для calculate используется default export
  • Для square используется named export
  • Оба import работают корректно

Попробуйте сами

// TODO: Импортируйте обе функции здесь из calculator.js


// Тест
console.log(calculate(10, 5, '+')); // Должно вывести 15
console.log(square(4));             // Должно вывести 16
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор JavaScript