AJAX и паттерн MVC - PullRequest
       15

AJAX и паттерн MVC

4 голосов
/ 14 марта 2009

Пожалуйста, перенаправьте меня, если подобный вопрос существует ... Я не смог ничего найти, хотя я уверен, что моя проблема довольно распространена ...

У меня есть страница, которая имеет 5-6 делений, которые могут быть индивидуально загружены через запросы Ajax. С помощью прототипа ajax.request () сервер (php) выводит обратно HTML-код для подразделения, прежде чем клиент обновит innerHTMLs div-ов.

Вот мой вопрос: Каков наилучший способ сохранения шаблона MVC на стороне сервера в отношении HTML-кода, который он выбрасывает?

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

Ответы [ 5 ]

4 голосов
/ 14 марта 2009

Вы можете использовать JSON для передачи данных на клиентскую часть и их построения там. Таким образом, у вас будет абстрагированный источник данных, не связанный вашей разметкой. JSON может быть напрямую оценен в объект javascript.

3 голосов
/ 14 марта 2009

Вам действительно нравится использовать MVC? C в основном удаляется соглашениями / RESTful URL.

Как сказал Энди, вы должны использовать JSON для передачи данных на клиентскую сторону. XML также является широко используемой альтернативой (потому что он действует намного лучше, если другие приложения должны использовать ваши сервисы). XML можно легко преобразовать в JSON! И код JSON является допустимым кодом объекта JavaScript. Так что вы можете использовать его для сшивания шаблонов на стороне клиента вместе с ним.

Вы должны попробовать EJS для шаблонов на стороне браузера / клиента! Если вы это сделаете, у вас нет HTML шаблона в ваших контроллерах! Просто бизнес логика. Это следует из многих передовых практик SOA. Архитектурный паттерн называется SOFEA или SOUI (это то же самое).

Я написал свою домашнюю страницу. Оценка множества шаблонных движков показала, что EJS - лучший кандидат.

Потому что: 1. Это быстро! 2. Это бесплатно (лицензия MIT)! 3. Хорошо работает с JQuery 4. Он действительно изменяет DOM, так что другие методы могут получить доступ к используемым шаблонам ( JS Repeater нет).

Другие рамки:

  1. JSmarty : Не так просто использовать, но он может использовать шаблоны Smarty. Это не доказано предприятием и все еще находится в стадии разработки.

  2. Шаблоны Javascript Trimpath : не очень хорошо работает с JQuery / Prototype ... Также находится в стадии разработки.

  3. jQSmarty : Хорошо, но кажется, что разработка остановлена. Последнее изменение было в 2008 году.

  4. seethrough_js : инвазивное макетирование шаблона. Хороший для людей Erlang.

  5. JsonML : также инвазивный формат шаблона, основанный на JSON. Что вы думаете об этом? Я думаю, что дизайнеры должны придерживаться своих элементов HTML / CSS, поэтому никакие знания не теряются.

  6. JS Repeater : Напоминает мне свои собственные неудачные попытки. Я проверил это и использовал это ... но он не очень хорошо справляется со многими вещами. (Например, пустые поля и т. Д.)

  7. Pure : время начать войну relegios о том, как разрабатывать страницы? Я думаю, что Чистый не ответ. Это вздутие живота, если вы определяете, что на самом деле делать, и оно не масштабируется, как JSF. У него нет инвазивного синтаксиса, это очень хорошо. Но цена сложных в использовании правил для рендеринга проблем мне не подходит. Просто кажется, что это неправильно. Я встречал других людей, которые думают совершенно иначе! Проверьте это и дайте мне знать, что вы думаете.

1 голос
/ 02 апреля 2009

Если вы считаете, что самая важная буква в MVC - это V для работы с AJAX. AJAX с HTML, а JS является частью уровня представления, поэтому теоретически это место для View - части.

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

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

1 голос
/ 14 марта 2009

Это то, что я делаю для MVC + AJAX ...

Действительно простая реализация, если вы спросите меня.

http://jarrettatwork.blogspot.com/2009/02/aspnet-mvc-ajax-brief-introduction.html

0 голосов
/ 14 марта 2009

Если HTML в основном состоит из строковых литералов, насколько я понимаю, вам, вероятно, следует переместить HTML за пределы <? ?> в целом помечает и вставляет динамическое содержимое из базы данных с небольшими встроенными фрагментами PHP, которые ссылаются на переменные, установленные контроллером.

Это по сути шаблонный механизм. Помните, что в основе PHP лежит механизм шаблонов.

Пример:

<?php
include 'controller.php'; // set variables used below
?>
<div>
   <h1>Hi there, <?=$UserName?></h1>
   <p>Since you've been here, <?=$numberOfDays?> days have gone by</p>
</div>

и т.д.. Это также возвращает вам подсветку синтаксиса в вашем HTML и избавляет вас от необходимости объединять все длинные строковые литералы внутри вашего PHP-кода, что часто портит читабельность кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...