Изменения

Почему React

2320 байтов добавлено, 22:13, 19 июня 2016
м
Нет описания правки
Почему React? Потому, что это правильный вариант View (в MVC (или /MVVM?). Который, по По большей части, не MVC, а "MC" (Model-Component) + внешний там вообще нет ничего про модель или контроллер (например, Dispatcher в случае Flux), который занимается есть только обработкой действий и обновлением моделейкомпоненты. Внутри самого React нет деления на V То есть, он не ограничивает вас в выборе реализации контроллера и Cмодели. Почему это правильно? Потому, что деление в части контроллера, связанной с View, всегда куча вопросов, начиная с того, нужен ли вообще отдельный контроллер для каждого View? Должен ли он подавать на самом-то деле искусственное. Мы вход View готовые проецированные данные для элементов или полную модель? Должен ли контроллер ставить обработчики событий на элементы View? Отсюда все чётко знаемвариации с ViewModel’ами, где ViewViewController’ами, презентерами и так далее. Короче, мы все чётко знаем, где начинается View и где начинается Model. А , а вот где контроллер - тут всегда вопросыкак между ними встаёт контроллер — вопрос. То ли правильное React обрубает все эти сомнения, объединяя View отражает состояние модели (общаясь с ней напрямую)со всем, то ли всё состояние должен проецировать контроллер что к нему относится (и тогда это ViewModel/презентер, ViewController)и называет это Component. То ли по контроллеру на экран Что мне гипотетически не очень нравится в реакте — это «явная иерархичность». Проблема в том, что скорость рендера сильно зависит от иерархии компонентов, собственно, чем они мельче, тем лучше, ибо компонент — это и есть минимальная «единица» обновления. При обновлении компонент, то ли по контроллеру сути, перерисовывается целиком с поправкой на компонент. Отсюда Virtual DOM — и все вариациихоть это, конечно, быстрее, чем, например, тупо поменять ему весь innerHTML [: контроллер)], презентервсё равно нет ничего хорошего в том, ViewControllerчтобы обновлять и diff’ать, ViewModel например, всю таблицу при изменении одной строки. Поэтому кроме компонента «таблица» обязательно приходится делать ещё и так далеекомпонент «строка таблицы». Вроде контроллер  В общем-то понятно, откуда всё это произрастает. Все новые фреймворки, по сути, в каком-то смысле — JS-шаблонизаторы, решающие задачу динамического обновления содержимого страницы при изменении входных данных. Angular выбрал прямолинейный путь с реализацией языка шаблонов и привязки их динамических частей к данным, а React выбрал нечто похожее на путь PHP/ASP, реализовав шаблонизацию прямо внутри кода на основном языке (или ViewModelну и, конечно, пограмотнее самого PHP/ASP) должен обеспечивать заменяемость View. Понятно, но по факту это никогда что при таком подходе не работаетособо «влезешь» в структуру кодогенерации, отсюда и Virtual DOM, и разбиение на мелкие компоненты. Зато сам код шаблонов писать удобно.