HTML, который генерируется как на стороне сервера, так и на javascript - как объединить? - PullRequest
2 голосов
/ 13 апреля 2011

Я обычно творческая девчонка, но сейчас просто не могу найти хорошего решения. Существует HTML (скажем, строки формы или строки таблицы), который генерируется как на основе javascript, так и на стороне сервера, в обоих случаях он абсолютно одинаков. Он генерируется на стороне сервера, когда вы открываете страницу (и он должен оставаться на стороне сервера для Google), и генерируется AJAX, чтобы показывать живые обновления или расширять форму новыми пустыми строками.

Проблема в том, что процедуры генерации HTML существуют уже дважды, и вы знаете, СУХОЙ (не повторяйтесь), да? Каждый раз, когда что-то меняется, мне приходится редактировать 2 места, и это просто не соответствует моему представлению о хорошем программном обеспечении.

Какова ваша лучшая стратегия для объединения генерации HTML на основе JavaScript и на стороне сервера?

PS: серверный язык всегда отличается (PHP, RoR, C ++).

PPS: Пожалуйста, не дайте мне ответ для Node.JS, я мог бы выяснить это самостоятельно; -)

Ответы [ 5 ]

1 голос
/ 13 апреля 2011

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

1 голос
/ 13 апреля 2011

Вот решение Ruby on Rails:

Каждая модель имеет свою частичную часть.Например, если у вас есть модели Post и Comment, у вас будут _post.html.erb и _comment.html.erb

Когда вы вызываете "render @post" или "render @comment", RoR будет смотреть натип объекта и решить, какой частичный элемент использовать.

Это означает, что вы можете перетаскивать объект одним и тем же способом во многих различных представлениях.
Т.е. в обычном ответе или в ответе AJAX вывсегда вызывайте "render @post"

Edit :
Если вы хотите визуализировать вещи в JS без подключения к серверу (например, вы получаете данные из другогосервер или что-либо еще), вы можете создать шаблон JS с помощью метода, который я упомянул, отправить его клиенту, а затем заставить клиента отображать новые объекты с использованием этого шаблона.Смотрите это как шаблонный плагин JS: http://api.jquery.com/category/plugins/templates/

1 голос
/ 13 апреля 2011

Какова ваша лучшая стратегия для объединения генерации HTML на основе javascript и сервера?

Если вы хотите остаться СУХИМ, не пытайтесь объединять их. Придерживайтесь генерации HTML only на сервере (явно предпочтительный вариант для SEO) или only на клиенте.

0 голосов
/ 13 апреля 2011

Загрузить страницу без каких-либо строк / данных.

А затем запустите ваши подпрограммы Ajax, чтобы получить данные в первый раз при загрузке страницы

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

0 голосов
/ 13 апреля 2011

Создайте страницу, которая генерирует HTML на сервере и возвращает его, например ::

.
http://example.com/serverstuff/generaterows?x=0&y=foo

Если вам это нужно на сервере, зайдите на эту ссылку или вызовите подпрограмму, которая обращается к ссылке. Если вам это нужно на клиенте, перейдите по этой ссылке с помощью AJAX, что в итоге вызовет тот же код сервера.

Или я что-то упустил? (Я не уверен, что вы подразумеваете под "сгенерированным AJAX").

Я не вижу другого решения, если у вас два разных языка. Либо у вас есть компилятор PHP / RoR / что угодно для JavaScript (то есть у вас есть источник, написанный на одном языке и автоматически сгенерированный на других), или у вас есть один сгенерированный вывод, который читает другой.

...