Вопрос проверяет понимание архитектурного паттерна Feature-Sliced Design и правил импортов между слоями, что важно для поддержки масштабируемых фронтенд-проектов.
Feature-Sliced Design (FSD) — это методология организации фронтенд-кода, где приложение разбивается на слои (layers), а каждый слой — на слайсы (slices) и сегменты (segments). Главная идея — управлять зависимостями через строгие правила импортов, чтобы код оставался предсказуемым и легко рефакторился.
Слои идут сверху вниз: app → processes → pages → widgets → features → entities → shared. Модуль может импортировать только то, что лежит ниже его слоя. Например, features может использовать entities и shared, но не widgets или pages.
index.ts.ui, model, lib, api, config.src/
app/ // провайдеры, роутинг, глобальные стили
pages/
home/
ui/HomePage.tsx
index.ts
widgets/
header/
ui/Header.tsx
index.ts
features/
add-to-cart/
ui/AddToCartButton.tsx
model/slice.ts
index.ts
entities/
product/
ui/ProductCard.tsx
model/types.ts
index.ts
shared/
ui/Button.tsx
api/http.ts
// features/add-to-cart/ui/AddToCartButton.tsx
import { Button } from 'shared/ui/Button';
import { Product } from 'entities/product'; // можно: слой ниже
// widgets/header/ui/Header.tsx
import { AddToCartButton } from 'features/add-to-cart'; // можно
// import { HomePage } from 'pages/home'; // нельзя: слой выше
Публичный API слайса скрывает внутреннюю реализацию: снаружи видно только то, что экспортирует index.ts. Это позволяет свободно менять внутренности слайса без поломки зависимых модулей.
Итог: FSD стоит применять в средних и крупных SPA, где важны масштабируемость и предсказуемость архитектуры; для маленьких проектов строгие слои могут быть избыточны.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию