Чем является React фреймворком или библиотекой?
Основы React
Формально React — библиотека для построения пользовательских интерфейсов, и сама команда React называет его именно так. Но вопрос глубже: граница проходит по принципу «кто управляет архитектурой».
Аргументы за «библиотеку»
- React решает одну задачу — слой представления: компоненты, состояние, рендеринг.
- Не диктует структуру приложения и не поставляет из коробки роутинг, работу с сервером, формы, стейт-менеджмент — всё это выбирается отдельно (React Router, TanStack Query, Redux…).
- Инверсии управления в архитектурном смысле нет: вы вызываете
createRoot().render()там, где хотите, хоть в куске legacy-страницы.
Аргументы за «фреймворк» (почему путаются)
- Внутри своей зоны React управление всё же инвертирует: он вызывает ваши компоненты, управляет их жизненным циклом и решает, когда рендерить.
- Экосистема де-факто стандартизована, а полноценные фреймворки поверх React — Next.js, Remix, Expo — дают роутинг, SSR, сборку. Официальная документация сегодня рекомендует стартовать именно с фреймворка.
Практическое отличие
- Библиотека: вы встраиваете её в свою архитектуру (React в Rails-страницу).
- Фреймворк: вы встраиваете свой код в его архитектуру (файловый роутинг Next.js, конвенции Angular).
Коротко для собеседования
React — библиотека: покрывает только UI-слой и не навязывает архитектуру, остальное собирается из экосистемы. Полноценные фреймворки строятся поверх него — Next.js, Remix. Нюанс: в рамках рендеринга React ведёт себя как фреймворк — сам вызывает ваши компоненты и управляет их жизненным циклом.