Получить доступ

Как организовать архитектуру большого фронтенд-приложения?

SeniorАрхитектура фронтенда
Ещё спрашивают так:
  • Что такое Feature-Sliced Design?
  • Как разделить фронтенд на модули?
Коротко

Цель — чтобы изменение в одной функции не задевало остальные и новый человек быстро находил код. Основа — разделение по функциональности (features, страницы, сущности), а не по типу файлов (components, utils, hooks), явные публичные API модулей, направление зависимостей (верхние слои зависят от нижних, не наоборот) и проверка границ линтером. Популярная методология — Feature-Sliced Design: слои app, pages, widgets, features, entities, shared.

  • Серверное состояние — в кэше запросов, клиентское — рядом с местом использования
  • Общие компоненты UI — в дизайн-системе, без бизнес-логики
  • Границы проверяются автоматически (eslint-plugin-boundaries, правила импорта)

А ещё Архитектура должна соответствовать размеру: для маленького приложения FSD избыточна

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Признаки проблем: циклические импорты, «utils» на тысячи строк, изменение формы ломает три страницы, страх рефакторинга.

Принципы:

  • модуль по бизнес-функции, внутри — всё нужное ей;
  • импорт только через публичный index модуля;
  • зависимости в одну сторону: страница → фича → сущность → общее;
  • типы API генерируются из контракта бэкенда;
  • состояние: серверное — TanStack Query, глобальное клиентское — минимум.

FSD:

слойчто внутри
appинициализация, провайдеры, маршруты
pagesстраницы из виджетов
widgetsкрупные блоки интерфейса
featuresдействия пользователя (добавить в корзину)
entitiesбизнес-сущности (товар, пользователь)
sharedUI-кит, утилиты, клиент API

Эволюция: при росте до нескольких команд — монорепозиторий с пакетами, затем, если нужно независимое развёртывание, микрофронтенды.

Что хотят услышать

  • Деление по функциональности и явные границы.
  • Направление зависимостей и автоматическая проверка.
  • Соответствие архитектуры масштабу.

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем