2010-10-25 5 views
1

Я ассистент в курсе, где студенты реализуют веб-приложение (это Q & Сайт, похожий на stackoverflow) с помощью Play! фреймворк. Это основанная на Java инфраструктура, основанная на шаблоне MVC. Модель и контроллер написаны на Java, где представление написано в HTML/CSS и некоторые расширения, которые предоставляет инфраструктура для доступа к информации о модели.Использование Javascript в приложении MVC

Вопрос, который возник недавно, заключается в том, сколько javascript можно использовать в представлении, чтобы что-то изменить в модели (например, голосовать, комментировать и т. Д.), Чтобы шаблон MVC не был слишком сильно нарушен. Или следует избегать всех функций Javascript, которые фактически изменяют данные в модели, и вместо этого маршрутизироваться через контроллер? Есть ли лучшая практика для этого?

+0

Сначала объясните, что вы подразумеваете под «функциями Javascript, которые фактически изменяют данные в модели». –

+0

Например, вы можете голосовать за сообщения. Функция JS будет напрямую вызывать метод в соответствующем экземпляре сообщения, фактически оставляя контроллер вне действия. Таким образом, модель вызывается из представления, а не из контроллера. Мой язык был немного неясным, он напрямую не меняет данные, он изменяет данные, вызывая методы модели. – Chnoch

ответ

0

Я стараюсь направлять все вызовы AJAX, которые должны выполнять любые операции CRUD, чтобы отправить запрос GET или POST функции в контроллер и позволить ему обрабатывать связь с моделью.

Это то, как HTML/CSS просматривают данные процесса (т. Е. Получая их от модели через контроллер и отправляя GET & POST-запросы контроллеру), и поскольку JS является клиентской стороной, ее не следует обрабатывать все иначе.

1

Предположительно на основании "javascript" Вы имеете в виду еще AJAX? (Вместо изменения JS вывода ... в этом случае это просто расширение представления). Нет никакой причины, по которой ваш AJAX не может/не должен быть маршрутизирован через ваш MVC, как любой другой компонент.

Конечно, это может ускорить изменение первоначального дизайна MVC, но, возможно, это приемлемая часть курса. Конечно, при использовании AJAX рендеринг вашего представления может обрабатываться JS, встроенным в существующее представление, - если данные предоставляются как JSON, а не фрагменты HTML.

1

Как возможно, что код JavaScript, выполненный на клиенте, может изменить «данные в модели»? Вы просто изменяете свойства в представлениях JavaScript на объектах на стороне клиента или вы вызываете какие-либо методы на стороне сервера из JavaScript (т. Е. Вызываете в сервлеты) для изменения данных?

Если это последний, то это нарушение MVC - все запросы от клиента должны проходить через контроллер.

+0

См. Приведенный выше комментарий. – Chnoch

0

Я чрезмерно использую ajax в своем приложении CakePHP MVC. В этом случае действия контроллера получают только , вызываемый javascript, рядом с одним статическим контроллером, который доставляет страницы html/javascript в браузер.