В чем разница между фреймворком и библиотекой?
Продвинутые темы
Фреймворк и библиотека — оба переиспользуемый код, но различаются контролем: библиотеку вызываешь ты, а фреймворк вызывает твой код (инверсия управления).
Библиотека
Набор функций/компонентов, которые ты вызываешь тогда, когда нужно. Контроль потока у тебя.
import { format } from 'date-fns';
const s = format(new Date(), 'yyyy-MM-dd'); // ты решаешь, когда вызватьПримеры: lodash, date-fns, React (формально — библиотека).
Фреймворк
Задаёт структуру и поток; ты пишешь код в его «слоты», а он вызывает его в нужный момент. Контроль у фреймворка.
Примеры: Angular, Vue (как фреймворк), Next.js, NestJS.
Инверсия управления (IoC)
- Библиотека: «ты зовёшь её» (
ты → библиотека). - Фреймворк: «он зовёт тебя» (
фреймворк → твой код) — принцип «Не звоните нам, мы позвоним вам» (Hollywood Principle).
Практические различия
- Гибкость: библиотека гибче, интегрируется в любой проект; фреймворк задаёт правила.
- Структура: фреймворк диктует архитектуру; библиотека — нет.
- Порог входа: фреймворк обычно выше.
React — библиотека или фреймворк?
Формально библиотека (UI), но с экосистемой (роутер, стейт) работает как фреймворк.
Коротко для собеседования
Разница в контроле (инверсия управления): библиотеку вызываешь ты, когда нужно (lodash), а фреймворк вызывает твой код и задаёт структуру (Angular, Next.js). Библиотека гибче, фреймворк диктует архитектуру. React формально — библиотека.