Export Flashcards
Export
Почему export default плохо?
У всех есть автоимпорт
Переименование не гарантирует переименование импортов
В целом, работа с именами дефолтных импортов - магия
Возможность экспортировать анонимные функции
Возможность указать любое имя при импорте значения
В случае множественных импортов создается неконсистентность
Многострочность
Отсутствие строгости нейминга -> дубликаты имен
Почему именованные экспорты?
Гарантия корректности нейминга (TS)
Унификация экспортов, отсутствие когнитивной нагрузки для принятия решения
Лучшая читаемость, особенно при множественных экспортах (хотя это больше про export const foo vs export {foo}- для изменения значения не нужно скроллить туда-сюда, чтобы понять, экспортируется ли оно
Public API
Мы всегда можем увидеть, что экспортирует модуль без необходимости лезть внутрь
Полная явность и открытость содержимого модуля
Автокомплит
Реэкспорты без алиасинга
dynamic imports (кроме React.lazy/dynamic из некста)
Случаи когда export default нужно использовать?
Требования фреймворков/библиотек (например, страницы в NextJS)
Финальные компоненты для lazy динамик импортов
Библиотечный экспорт (те же реакт/лодаш)
Специфичные потребители
Конфиги/схемы/etc. в том случае, когда их будет потреблять сокрытая автоматика (webpack, next, tailwind, etc.)