Публичный API слайса
Вопрос
Что такое публичный API слайса в FSD и зачем он нужен?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
каждый слайс и сегмент отдаёт наружу index-файл
снаружи импортируют только из него, не из внутренностей
это даёт свободу перекладывать файлы внутри слайса
видно, что считается контрактом, а что деталью
на крупных проектах бьёт по скорости сборки - сюда помогает eslint, а не бочка ре-экспортов
нарушение ловится линтером по глубине пути импорта
Что могут спросить следом
- Чем это отличается от barrel-файлов, за которые ругают?
Разбор
Каждый слайс наружу выставляет index.ts, и снаружи импортируют только оттуда:
// можно
import { ProductCard } from '@/entities/product';
// нельзя
import { ProductCard } from '@/entities/product/ui/ProductCard/ProductCard';
Зачем. Во-первых, внутренности можно переставлять как угодно, пока индекс не изменился. Во-вторых, по индексу сразу видно контракт слайса - что он вообще умеет.
Оговорка, о которой стоит сказать самому: бесконтрольные бочки ре-экспортов замедляют сборку и мешают tree-shaking. На больших проектах индекс держат тонким и не тащат в него всё подряд, а запрет на глубокие импорты обеспечивают линтером.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.