2012-04-18 21 views
5

Я сейчас нахожусь в точке, где я действительно хочу организовать свой код таким образом, чтобы сделать его более масштабируемым и управляемым. Я хочу лучше понять архитектуру MVC в javascript, не используя фреймворк.MVC in Vanilla JavaScript

Так это то, что я понимаю, до сих пор (пожалуйста, пожалуйста, пожалуйста, поправьте меня, если я ошибаюсь):

Модели: организованной структуры сайтов/веб-приложение контент (фото, копировать, загружаемый содержимое и т. д.) , который также имеет логику, необходимую для манипулирования содержимым. поэтому в javascript модель может быть объектом JSON или вызовом файла php, который извлекает/обновляет базу данных, а логика модели может быть функциями, которые отвечают за синтаксический анализ, регулярное выражение и организацию содержимого, чтобы затем его можно было передать на вид?

View: пользовательский интерфейс и визуальное представление данных/контента Модели. его единственная задача - отображать содержимое и принимать пользовательский ввод, если это применимо?

Контроллер: так задание только для контроллера должно выступать в роли посредника между моделью и видом? например, если представление нуждается в данных, запрашивает ли контроллер, который затем переходит к модели, чтобы получить данные, а затем отправляет их обратно в представление? и если есть какой-либо пользовательский ввод, представление отправляет его контроллеру, который затем отправляет его модели, которая затем обновляется, в этот момент контроллер затем информирует мнение о том, что модель была обновлена?

MVC был и остается для меня путаницей в сочетании с тем фактом, что в его заявлении было указано, что MVC не является естественным фактором в javascript (в аренде не нравится в php, java, actionscript и т. Д. .)

+0

Попробуйте взглянуть на MVC asides из Javascript, прочитайте некоторую теорию об этом. Затем вы можете применить эти методы на любом выбранном вами языке. – TJHeuvel

+0

Мне еще предстоит увидеть чистую MVC-реализацию MVC с нуля в javascript. Реализация ванили js в TodoMVC окончательно не соответствует действительности MVC, хотя она имеет разделение разных слоев. См. Мой комментарий к принятому ответу. Иллюстрация из главных шаблонов дизайна головы может помочь: http://codereview.stackexchange.com/questions/42353/is-the-vanilla-implementation-of-todomvc-really-an-mvc-app – oligofren

+0

Причина отсутствия true mvc с нуля - это количество кода шаблона. Приложение vanol TodoMVC - это 900 + строк JS, но не содержит необходимых частей, чтобы быть истинным MVC. Ответ «The Sheep» объясняет, почему это не обязательно плохо.) – oligofren

ответ

3

Глядя на код, я всегда был лучшим способом узнать, поэтому я решил поделиться этим.

TODO mvc comparing many different JS MV* Frameworks

выше ссылка сравнивает все JS мв * рамки. Это демо должно особенно заинтересовать вас,

Vanilla JS Todo mv* implementation

source

Из звуков него вы понимаете, что MVC это и просто запутался, как реализовать это в JS, просто посмотрите на разных платформах (ember.js, backbone.js и т. д.) и их источник, чтобы их взять на себя. Список todo - отличная отправная точка.

+1

Реализация vanilla js не является реализацией MVC. Это модель-представление - любая реализация - как и большинство других реализаций (MVB, MVP, MVVM и т.п.). Более конкретно, реализация java vanilla не является MVC, поскольку она не применяет простые ограничения, которые налагают MVC: элемент управления имеет ссылку на View и Model + View, имеет ссылку на модель и контроллер. Он также не имеет реализации Observer в Модели, так что View может обновляться на основе этого. – oligofren

+0

@oligofren спасибо за объяснение проголосовало на вопрос 2 года, предупредил меня, чтобы обновить ссылки. – Loktar

+0

Кажется, кошерный сейчас :) – oligofren

7

Первая истина в том, что View и Controller - в большинстве случаев - очень близки. Иногда даже то же самое. И это не обязательно плохо. Если у вас есть таблица, выберите строку, затем нажмите кнопку, которая изменит данные в выбранной строке, кнопка, очевидно, будет частью представления (вы видите данные) и Контроллер (вы меняете данные). Есть лучшие примеры для этого, я уверен, что ...

Вторая истина заключается в том, что вы найдете почти столько же мнений по MVC, как есть люди;)

Но лично я бы посоветовал вам чтобы не придерживаться какой-либо схемы дизайна рабски.MVC является хорошей отправной точкой для разработки кода, но в конечном итоге ваш код должен быть быстрым, стабильным и поддерживаемым. И вам (и вашей команде) должно быть удобно с кодом. Если вы закончите с кодом, который следует за шаблоном MVC, отлично. Если нет, то и штраф. По крайней мере, это мой взгляд на это.

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