MVC против Flux? Двунаправленный против однонаправленного?

глядя на следующую диаграмму (которая объясняет MVC), я вижу однонаправленный поток данных.

Итак, почему мы считаем, что MVC имеет двунаправленный поток данных при обосновании потока ?

MVC Pattern

4 ответов


потому что в рамках Javascript MVC не работает так, как вы изобразили. Пользовательский интерфейс обычно взаимодействует с моделью двунаправленно, как в:

  1. пользователь вводит в поле зрения
  2. MVC framework связывает onchange () для обновления модели.
  3. Ajax запрос приносит новые данные модели.
  4. MVC framework обновляет значение представления ввода для соответствия модели.

в архитектуре Flux пользовательский интерфейс будет запускать только независимое действие с типом и связанными данными диспетчеру, который затем обновит модель так же, как любой фоновый метод ajax обновит модель.

ссылка: http://www.thesoftwaresimpleton.com/blog/2013/03/23/client-side-mvc/

"клиентская сторона MVC полностью отличается от серверной стороны MVC"

"мы создаем двустороннюю связь между двумя объектами..."

"вкратце мы связываем проволокой совместно значение свойства "имя" объекта Person для свойства value входных данных."

http://guides.emberjs.com/v1.10.0/object-model/bindings/

привязки в Ember.JS можно использовать с любым объектом, не только между виды и модели.


реальный и чистый MVC является однонаправленным. Это ясно из диаграммы Википедии, вставленной в вопрос.

более десяти лет назад, когда серверные фреймворки, такие как Apache Struts, реализовали вариант шаблона MVC под названием Model View Presenter (MVP), они заставляли каждый запрос проходить через контроллер, и каждый ответ возвращался через контроллер. Все продолжали называть его MVC. Из-за специфики интернета, любые изменения в модели не могут быть распространены на вид без просмотра отправки запроса или обновления. Так что чистый MVC не реализован. Скорее MVP реализован.

несколько лет назад, когда такие фреймворки, как Angular, Ember, Knockout реализовали MVC на переднем конце, они реализовали другой вариант MVC под названием Model View ViewModel (MVVM) pattern, немногие люди продолжали называть его MVC. (и мало кто понял, что терминология не важна и назвал ее MVW (W означает что угодно)), ни один из них не реализовал чистый MVC.

когда React родился, они воспользовались возможностью реализовать чистый MVC (а не MVP или MVVM) и переименовали его в Flux с небольшими изменениями. Я чувствую, что Flux-это еще один вариант MVC. Хотя команда Flux/React говорит, что это не MVC, я вижу много паритета между обеими архитектурами - Flux и MVC.


Я встроенный разработчик, и я использую шаблон MVC в своем приложении. Мое приложение очень мало, и я настроил свою архитектуру почти однонаправленным MVC. Но я прочитал эту статью, объясняя клиентскую сторону MVC и некоторые мысли о различиях между MVC и FLUX.

ссылка: http://www.christianalfoni.com/articles/2015_08_02_Why-we-are-doing-MVC-and-FLUX-wrong

традиционный В MVC

|------|  request   |------------|  request   |-------|
|      | ---------> |            | ---------> |       |
| VIEW |  response  |            |  response  |       |
|      | <--------- |            | <--------- |       |
|------|            |            |            |       |
                    | CONTROLLER |            | MODEL |
|------|  request   |            |  request   |       |
|      | ---------> |            | ---------> |       |
| VIEW |  response  |            |  response  |       |
|      | <--------- |            | <--------- |       |
|------|            |------------|            |-------|

поток

 COMPONENTS          ACTION CREATORS           STORES

    |----------------------<<<<-------------------|
    |                                             |
|------|            |------------|            |-------|
|      |  request   |            |  request   |       |
| VIEW | ---------> |            | ---------> | MODEL |----
|      |            |            |            |       |   |
|------|            |            |            |-------|   |
                    | CONTROLLER |                        |
|------|            |            |            |-------|   |
|      |  request   |            |  request   |       |   |
| VIEW | ---------> |            | ---------> | MODEL |   |
|      |            |            |            |       |   |
|------|            |------------|            |-------|   |
   | |                                           |        |
   | |--------------------<<<<-------------------|        |
   |----------------------<<<<----------------------------|

некоторые люди приняли термин MVC для обозначения фреймворков JavaScript, которые другие указали, что не были чистыми MVC но были вариации, которые можно было бы назвать MVP (позвоночник), MVVM (Угловое 1) или более широко MV* (Также см. Аруна).

, когда Facebook представил Flux, они сравнил его с проблемами с MVVM/MVP / MV*, но ошибочно использовал термин В MVC.

для чистых разработчиков MVC, смотрящих это видео, заявленные проблемы Facebook с MVC не имели смысла, и описание потока Facebook было ближе к MVC, чем система MVVM, которую они описали:

основная проблема заключается в том, что они "делали" MVC неправильно. Затем они исправили это, но решили ребрендировать его и сказать, что они изобрели шаблон развязки данных, просмотра и обработки событий

на YouTube комментарий

похоже, ваши программисты создали flux, потому что они не знали, как правильно использовать MVC и диспетчеры событий.

комментарий на YouTube