Grails View Rendering.Визуализировать GSP или использовать магистраль + шаблонизацию? - PullRequest
1 голос
/ 19 августа 2011

Я хочу создать веб-приложение с использованием Grails.

Основной макет состоит из нескольких частей, таких как верхний, левый, контент и т. Д. и я хочу, чтобы каждая часть была частично обновляемой. Я планирую использовать jQuery для выполнения ajax-запроса и обновления.

Давайте сосредоточимся на макете контента. У меня есть два варианта рендеринга вида:

  1. Как известно, Grails по умолчанию использует Sitemesh для своего просмотра. В общем, я буду использовать jQuery, чтобы получить страницу gsp, используя ajax. И поместите эту страницу в макет контента.
  2. Я буду использовать jQuery для получения объекта JSON (вместо GSP) из контроллера Grails и использования представления рендеринга с использованием любого плагина шаблонов jquery. Мне может понадобиться использовать backbone.js / spine.js для управления структурой ОО.

Какой из двух вариантов лучше?

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

Или, может быть, вы знаете другие лучшие варианты?

Спасибо:)

1 Ответ

0 голосов
/ 19 августа 2011

Прежде всего, могут возникнуть ситуации, когда вы вынуждены использовать комбинацию обоих (для одних и тех же структур).Очевидно, что это утечки ремонтопригодности и следует избегать.

Из ремонтопригодности , гибкость или скорость разработки зрения, вы должны рассмотреть первый вариант.Это то, для чего делается Grails.Для этого есть большие преимущества: вы можете визуализировать ваш шаблон в GSP, когда GSP вызывается впервые.Когда вызывается действие AJAX, вы просто переопределяете только этот шаблон.Это коротко, просто и работает.Большинство тегов Grails могут справиться с этими действиями.Кроме того, он легко тестируемый .

Однако при таком подходе вы теряете немного возможность повторного использования , когда хотите обновить контент на основе других событий (например, WebSockets / comet).и вы не хотите / не можете снова вызвать сервер.В этом случае вам следует реализовать логику шаблона с использованием jQuery-Template и заполнить его данными JSON, полученными из вашего push-сообщения сервера.

Производительность : Существуют также варианты использования, в которых следует учитывать и второй вариант: если у вас есть чат, вы хотите, чтобы новые сообщения отображались только постепенно (или вынеобходимо уменьшить используемую полосу пропускания сервера) и не хотеть отправлять пользователю полный ход чата только потому, что есть одно маленькое новое сообщение.Здесь вы не можете использовать шаблоны без каких-либо взломов или ограничений.Кроме того, если вы хотите предоставить пользователю ощущение в реальном времени, вы не можете позволить ему ждать ответа сервера, и вам необходимо обновить представление напрямую, используя JQuery, где вы не можете повторно использовать свой шаблон.Поэтому вы должны хранить данные шаблона в одном месте и использовать исключительно jQuery-Template или аналогичный - по крайней мере, с моей точки зрения.

...