Является ли хорошей идеей объединить JS-фреймворк Ajax/UI (ext, jquery-ui) с PHP-фреймворком MVC (zend, symfony)?


Я понимаю, что это очень общий вопрос, но, думаю, на самом деле я не ищу окончательного ответа. Будучи новичком в PHP-фреймворках, мне трудно разобраться в этом.

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

Обычно ли это делается в первую очередь для Приложения, управляемые AJAX? Существует ли общепринятый/распространенный способ сделать это?

Author: Greg, 2009-11-26

5 answers

Краткий пример того, как это может сочетаться для приложения Zend Framework (и это из демонстрационного приложения, которое я написал несколько месяцев назад):

  • Используйте платформу MCV для создания полнофункционального сайта (который работает без javascript).
  • Измените контроллер, чтобы понять разницу между "обычным" запросом и запросом AJAX (переключение контекста Zend упрощает это).
  • Добавьте Javascript (в моем примере jQuery), чтобы полностью заменить ссылки AJAX события.

В конце концов, приложение PHP знает, что для запроса AJAX требуется ответ AJAX (меньшая пропускная способность, меньшая обработка, только JSON или HTML-фрагмент), но для обычного запроса требуется сгенерированная целая страница.

По сути, вы просто используете AJAX для запроса (или обновления, или добавления данных) шаблона "просмотр" без необходимости обрабатывать весь макет. Помощник по действию переключения контекста Zend Framework может помочь сделать это более осмысленным.

Это стоит того упоминание о том, что переключение контекста хорошо работает при предоставлении запроса в различных форматах - HTML/XML, CSV и т.д.

 3
Author: Tim Lytle, 2009-11-26 00:10:55

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

По моему опыту, это очень хорошо работает с функциями AJAX, так как вам нужно всего лишь изменить представление, чтобы вернуть необходимую информацию в формате JSON или XML.

 4
Author: nickf, 2009-11-26 00:01:14

Это очень хорошая идея, так как фреймворки PHP MVC поставляются в комплекте с фреймворками JS:


Обновлена ссылка, спасибо "Исключение e".

 2
Author: powtac, 2009-11-26 00:39:22

Лично мы используем Zend (MVC, а также другие аспекты платформы Zend) с jquery, и это очень хорошо работает вместе. Поскольку не все ваше взаимодействие с html-страницей будет осуществляться с помощью jquery (ajax), настоятельно рекомендуется использовать стандартную архитектуру MVC. Вам, безусловно, нужны уровни вашей архитектуры (разделяющие модель и представление), и наличие jquery (по крайней мере, для меня) и дополнительная "функция", позволяющая выполнять ваш MVC асинхронно.

 1
Author: Arthur Frankel, 2009-11-26 00:00:28

Просто кажется, что использование дополнительного фреймворка MVC на бэкэнде приведет к путанице.

Не нужно беспокоиться об этом. Вы можете использовать zend framework и extjs, например, независимо при разработке, они действительно являются отдельными продуктами. Зависимости между этими слоями должны быть простыми . Не нужно беспокоиться.

Связь низкая, вам нужно только настроить средства для запроса данных с вашего серверного приложения и делать с ними все, что вы хотите на стороне клиента. Грань между этими системами проста и не собьет вас с толку.
Extjs на самом деле не имеет структуры mvc imho. Он предлагает предопределенные богатые компоненты. Вы склеиваете эти компоненты с некоторой конфигурацией и настраиваете URL-адреса вашего сервера, с которых можно получать данные.

Как заставить ваш zend mvc реагировать на ajax? Я рекомендую вам просмотреть презентацию о zf ↔ ajax от руководителя проекта zf.

 1
Author: Exception e, 2009-11-26 00:06:36