MVC, MVVM и почему React не MVC
Вопрос
Знаешь MVC, MVP, MVVM? Чем отличаются и к чему ближе React?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
MVC - контроллер принимает ввод, меняет модель, вид перерисовывается
MVP - презентер посредник, вид пассивен
MVVM - двустороннее связывание через вью-модель, это Angular и v-model во Vue
React - однонаправленный поток: состояние → вид, события → обновление состояния
называть React «видом из MVC» неверно: нет контроллера и нет двусторонней связи
аналогия мешает больше, чем помогает
Что могут спросить следом
- А Flux и Redux - это что по этой классификации?
Разбор
MVC - контроллер принимает ввод, изменяет модель, вид отражает модель.
MVP - вид пассивен, всё решает презентер. MVVM - вью-модель и двустороннее
связывание: изменение в поле меняет модель и наоборот. Это Angular и v-model во Vue.
React ни к одной из трёх не сводится. У него однонаправленный поток: состояние определяет отображение, события порождают новое состояние. Контроллера нет, двустороннего связывания как механизма нет - его имитируют вручную парой «значение + обработчик».
Частый ответ «React - это V из MVC» звучит заученно и неверно. Лучше сказать так: «Проводить аналогию можно, но она мешает: в React нет контроллера и нет двустороннего связывания, поэтому привычки из MVVM приводят к лишнему состоянию».
Частые ошибки
- «React - это MVC»: неверно и сразу слышно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.