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Задание
ЛегкоУ вас есть два файла. Ваша задача — настроить Export в calculator.js и Import в main.js.
- В
calculator.js: экспортироватьcalculateкак default, аsquareкак named - В
main.js: правильно выполнить Import обеих функций
Проверки будут проверять:
- Для
calculateиспользуется default export - Для
squareиспользуется named export - Оба import работают корректно
Попробуйте сами
// TODO: Импортируйте обе функции здесь из calculator.js
// Тест
console.log(calculate(10, 5, '+')); // Должно вывести 15
console.log(square(4)); // Должно вывести 16В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Объекты и ключевое слово this
Краткий обзор: ОбъектыДобавление методов в объектыПонимание ключевого слова thisФункции-конструкторыКлючевое слово newИтоговое испытание7Наследование и ключевое слово extends
НаследованиеОтношение «is-a»Ключевое слово extendsМетод super()Наследование свойств и методовИтоговое испытание10Полиморфизм
Что такое полиморфизм?Переопределение унаследованных методовИспользование superИтоговое задание13Композиция против наследования
Отношения «has-a» и «is-a»Ограничения глубокого наследованияСоздание объектов2Организация кода
Что такое модули?Экспорт с помощью exportИмпорт с помощью importDefault против именованных экспортов5Инкапсуляция и доступ
ИнкапсуляцияПубличные и приватные поля классовПриватные методыЗадание на повторение8Организация кода ООП
Организация классов в модули11Проект: Отрисовщик фигур
Настройка: Класс Shape и экспортНаследование класса CircleПереопределение и метод AreaСтатический счетчик фигур14Система управления библиотекой
Проектирование библиотекиКласс Book с использованием композицииВалидация автора книги6Проект: Простой банковский счет
Класс BankAccountПополнение и снятие средствБаланс как приватное поле9Статические методы и свойства
Уровень класса против уровня экземпляраСтатические свойстваСтатические вспомогательные методыЗадание на закреплениеПотренируйтесь самостоятельно: Онлайн-компилятор JavaScript