Что такое MVC в Ruby on Rails?

Мог кто-то объяснять MVC мне в Ruby on Rails в терминах неспециалиста. Я особенно интересуюсь пониманием Модели в MVC (не может получить мою голову вокруг модели).

22
задан Nakilon 15 October 2014 в 09:51
поделиться

4 ответа

Часть фона, MVC представляет собой (составной) шаблон проектирования и был разработан в 1979 году Трюгве Ренскауг (Smalltalk).

Настоящий MVC в основном планировался для использования в n-уровневых (невеб-) системах и разделяет систему на 3 отдельные части, Модель, Вид и Контроллер

Модель

  • Содержит данные для приложения (часто связанное с базой данных)
  • Содержит состояние применения (например какие заказы имеет клиент)
  • Содержит всю бизнес-логику
  • Уведомление об изменении состояния (** не относится к ROR, см. ниже)
  • Нет знаний о пользовательских интерфейсах, поэтому его можно использовать повторно

Вид

  • Генерирует пользовательский интерфейс, который представляет данные пользователю
  • Пассивный, i. e. не производит никакой обработки
  • Вид работает после того, как данные отображены пользователю.
  • Многие виды могут обращаться к одной и той же модели по разным причинам

Контроллер

  • Получает события из внешнего мира (обычно через виды)
  • Взаимодействие с моделью
  • Отображает соответствующий вид пользователю

** Классический MVC не подходит для веб-приложений, так как модель не может посылать все изменения вида в режиме наблюдателя (вид - это веб-страница). Модель2 была представлена для преодоления меняющейся инфраструктуры командой JSP в 90-х годах . MVC Web фреймворки на самом деле не MVC, а Model2 (это верно для Ruby on Rails).

Вот описание паттернов GUI, включая MVC от мастера, Мартина Фаулера. GUI архитектуры

Лучшая книга, которую я нашел до сих пор является Agile Web Development with Rails . Она начинается с предположения, что никаких знаний, и является довольно полным.

Надеюсь, что это поможет пролить свет на вас!

.
46
ответ дан 29 November 2019 в 03:59
поделиться

Я думаю, что лучший способ понять MVC - это на примере. Попробуйте создать простое приложение Rails с помощью MVC. В Интернете есть множество учебных пособий, например пример блога в «Приступая к работе с Rails» .

Если вы решили учиться с помощью кодирования примера, ознакомьтесь с ответами на Где я могу найти ясное примеры MVC?

1
ответ дан 29 November 2019 в 03:59
поделиться

Ваша Модель - это структура данных, которую использует ваша программа.

Представление - это часть, которая взаимодействует с экраном или на следующий уровень выше.

Контроллер обычно обрабатывает данные между модель и представление

Структуры MVC часто являются вложенными, поэтому «Модель» или «Представление» может содержать свой собственный MVC (подумайте о компоненте на экране. Вы можете просто заполнить его строкой, но за кулисами код компонента рисует свое собственное небольшое представление, имеет свою собственную небольшую модель (строку, которую вы передаете) и имеет небольшой контроллер, отображающий данные в представлении.

В Rails роли модели, представления и контроллера хорошо подходят -определенный структурой, любое руководство будет указывать на три компонента, поскольку оно проведет вас через файлы, которые он создал.

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

3
ответ дан 29 November 2019 в 03:59
поделиться

MVC предназначен не только для Ruby on Rails. На самом деле он был создан задолго до того, как появился Ruby on Rails. В основном это просто способ организации вашего кода, чтобы у вас был код, отвечающий за ваши модели (версия таблицы базы данных класса), код, который отвечает за ваши представления (что визуально отображается пользователю) и код, ответственный за для ваших контроллеров (что связывает представления с моделями и выполняет основную часть вашей логики.

Это описание, не зависящее от фреймворка. Каждый фреймворк, использующий MVC, имеет свой способ его реализации. Для Ruby on Rails каждая модель представляет таблицу базы данных как класс, который может напрямую взаимодействовать в коде с другими объектами без необходимости писать какой-либо SQL. Все SQL обрабатываются в фоновом режиме, и вам просто нужно думать об этом, как если бы это был обычный класс (ну, почти, это еще не все). Представление в основном HTML и представляет то, что будет отправлено в браузер. Контроллер - это просто код, который обменивается данными между моделями и представлениями.

В общем, MVC характерен не только для Ruby on Rails ... он просто самый популярный.

1
ответ дан 29 November 2019 в 03:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: