2012-05-24 5 views
17

backbone.js упоминается как структура MVC для Javascript. Но так ли?Является ли Backbone.js действительно MVC?

Вот описание модели, от http://documentcloud.github.com/backbone/

Модели являются сердцем любого приложения JavaScript, содержащий интерактивные данные, а также большую часть логики вокруг него: преобразования, проверки, вычисляемые свойства и контроль доступа. Вы расширяете Backbone.Model с вашими специфичными для домена методами, а модель предоставляет базовый набор функций для управления изменениями.

Теперь это не мое понимание модели в MVC. По моему мнению, модель - это просто классы, которые моделируют домен, поэтому ваши ученики, школы и учителя объекты. Контроллер выполняет на них бизнес-логику и взаимодействует с представлением для отображения и приема ввода.

Такое понимание согласуется с различными определениями я найти в Интернете, IE http://en.wikipedia.org/wiki/Model_view_controller:

Model-View-Controller (MVC) является шаблоном для компьютера пользователя интерфейсов, который разделяет приложение в трех областях ответственности:

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

Итак, мой вопрос: является ли backbone.js действительно основой MVC в каком-либо смысле, или это скорее всего общий способ помочь вам склеить все вместе?

Кстати, определение модели от Backbone.js игровой FAQ, как представляется, отличается от той, которую я цитировал выше (также от Backbone.js http://documentcloud.github.com/backbone/#FAQ-mvc:

Backbone.Model - Как модель минус Rails . методы класса Обертка строки данных в бизнес-логике

Так в каком смысл Backbone.js действительно MVC или нет

(Протест.?: Я просто оцениваю backbone.js в настоящее время.)

+1

Вот почему многие люди относятся к таким структурам, как MV * –

+0

Обратите внимание на типы * логики *, которые указаны как часть модели: «преобразования, проверки, вычисленные свойства и контроль доступа». Это все разумные проблемы объектов домена в любом приложении MVC. Это не то же самое, что и прикладная/бизнес-логика, такая как маршрутизация между представлениями, отправка обновлений в базу данных и т. Д., Которые обычно несут ответственность контроллера. – mellamokb

+1

Я должен действительно понизить это (но я этого не делаю) это определенно похоже на заговор за заработок! но в любом случае никто не сказал, что Backbone - это MVC, они? ** Они объясняют это как библиотеку, которая предоставляет структуру, используя Модели, Представления, Коллекции и Маршрутизаторы (опять же не упоминание о том, что это похоже на MVC). ** Люди не могут помочь с неправильными предположениями, могут ли они? – Deeptechtons

ответ

11

Its немного запутанным, когда вы пытаетесь найти "M" (модель) "V" (Просмотр) и «C» (Контроллер).

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

, пересекающей "Условия" с "Намерены":

"M":

Backbone Модели. Коллекции привязаны к Модели.

"V":

по умолчанию Подчеркивание.JS шаблон представляет собой "View Намерение" стандартных MVC

"C":

Backbone Посмотреть является контроллер. Его называют Просмотр в позвоночнике (как и во многих других, таких как Django), потому что он обрабатывает рендеринг. От MVC Точка зрения его контроллер. Маршруты связаны с Просмотры

Теперь, иногда просто чтобы удовлетворить MVC аббревиатуру некоторые называют его «Model View Коллекции». Но об этом не следует говорить.

18

Магистраль является одной из тех MV * (звезда MV). Существует нет контроллера, потому что логика, управляющая приложением, находится в представлении (например, как M (V + C)).

И нет единого определения для «Модели», поскольку оно используется по-разному в разных рамках на разных языках. Но, как правило, модели представляют собой абстракцию хранения данных и, возможно, имеют немного логики, такие как проверка правильности, форматирование и переключение состояний.

+0

Почему вы ставите логику в точку зрения? –

2

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

Как уже отмечалось, логика, включенная в модели Backbone, является логикой, вызывающей озабоченность модели. Стандартная реляционная база данных, представляющая собой набор моделей (таблиц), обычно заботится о типе данных в столбцах.

Логика, которая, как правило, входит в ваши контроллеры («Виды»), будет работать так же, как обрабатывать данные временного сеанса, проверять состояние пользователя (например, аутентифицироваться, хотя вы не будете делать это в js), привязывая представления к модели (Backbone делает именно это, управляя тем, где и когда модели хранятся/создаются на основе действий пользователя и шаблонов привязки для обновления изменений модели).

Итак, в целом, Backbone действительно хорошо подходит для MVC, намного лучше, чем для большинства серверных «MVC» фреймворков, которые обычно представляют собой «PAC» (Presentation-Abstraction-Control).

2

Виды обоих. Если вы смотрите на строгий смысл модели; то есть, что модель - это просто данные, то нет. Но проверки, преобразования и т. Д. Были размещены там, потому что Backbone довольно ориентирован на модель. По собственному опыту, я обычно рассматриваю модели Backbone в традиционном смысле в том, что модель представляет собой представление приложения хранилища данных в бэкэнде, и все, что у него есть, - это методы доступа для управления этими данными.

Дело в том, что, хотя существуют возможности для проверки или выполнения контроля доступа и т. Д., Вы можете выбрать более классический шаблон MVC. Это полностью зависит от вас. Это то, что мне нравится в Backbone, это то, что он дает вам MVC-движок, на котором вы строите всю архитектуру приложения. Если вы хотите следовать классическому шаблону проектирования MVC, вы можете это сделать. Ура!

1

в Backbone.js MVC означает вид модели СБОРА ...

Смежные вопросы