Forum Webscript.Ru
Общие => Веб-технологии => Тема начата: sd1074 от 23 Января 2008, 22:39:23
-
Такой вот вопрос.
Есть необходимость перед отправлением HTML-страницы пользователю выполнить некий JavaScript внутри неё на стороне сервера и уже эту обновлённую страницу отправлять.
Существует ли что-то такое?
-
sd1074
sd1074:
Существует ли что-то такое?
Не в реальном мире.
Есть серверные языки, используйте их - для работы с кодом страницы. Объектная модель документа на сервере еще даже не существует.
-
Да, да я в курсе на счёт серверных языков :) У меня есть небольшой опыт.
Однако согласитесь, что в этом есть смысл.
Вот смотрите: допустим, ваша страница имеет гостевую книгу на AJAXе, то есть при добавлении сообщения вам нужно обновить содержимое страницы (там уже могли появиться сообщения и от других пользователей). С помощью аякс-запроса вы получаете список сообщений и выводите их. То есть механизм извлечения данных из БД (выполняемый серверным скриптом) и вывода их в НТМL уже запрограммрован.
Но вот когда пользователь первый раз открывает страницу, список сообщений формируется обычно серверным скриптом, то есть получается одно и тоже делается два раза. Если же использовать АЯКС запрос для получения списка сообщений даже в момент первой загрузки страницы, то получается медленнее, т.к. выполняется два ХТТП-запроса.
Очевидным выходом является выполнение AJAX запроса внутри сервера. А конкретнее той части JavaScript, которая парсит данные полученные из БД (и которые приходят в виде AJAX-ответа (причём вероятно в формате JSON) и формирует из них HTML-код).
Я вообще говоря, не прошу вас согласиться как написал вначале, а просто прошу порассуждать по этому поводу. Может быть я что-то не заметил и можно как-то сделать всё проще?
Основная идея заключается в том, чтобы как-то исключить тот момент, когда серверный и клиентский скрипты делают одно и то же.
-
sd1074
а что вам мешает при первой загрузке все грузить используя серверную сторону? а потому уже запрашивать AJAX - ом если есть обнавления.
-
Да ничего не мешает... но это всё некрасиво, получается дублирование кода.
Может есть хоть какие-то средства для работы с DOM на сервере?
-
Друзья, зачем вы столь категоричны?
Оказалось есть как минимум 2 пути. На другом форуме подсказали.
Ajax сервер:
http://www.aptana.com/jaxer
Модуль под Перл:
http://search.cpan.org/~claesjac/JavaScript-1.04/lib/JavaScript.pm
-
sd1074:
Может есть хоть какие-то средства для работы с DOM на сервере?
Ну к примеру есть в PHP средства для работы с DOM
sd1074:
Да ничего не мешает... но это всё некрасиво, получается дублирование кода.
дублирование кода? Ты о чем написал функцию на серверном языке вот и нет дублирования. Когда надо запрашиваешь на сервере, не надо запрашиваешь с помощу JavaScript - а.
-
sd1074
sd1074:
зачем вы столь категоричны?
Вы бы сначала разобрались, что такое CPAN:Javascript, и как работает Jaxer.
Дублирование кода никуда не уйдет - просто потому что код на сервере и клиенте работает с разным контекстом. Существуют "обертки", которые могут бесшовно подменять вызовы для сервера и клиента (как раз кусок jaxer-а), но работают они...скажем так...без гарантии.
Хотя есть и удачные решения, хоть в том же пакете "AJAX Library" для ASP.NET от msft.
-
Спасибо, разбираюсь.
-
а что вам мешает при первой загрузке все грузить используя серверную сторону? а потому уже запрашивать AJAX - ом если есть обнавления.