Выполнить JavaScript на сервере IIS - PullRequest
6 голосов
/ 27 апреля 2010

У меня следующая ситуация. Клиент использует JavaScript с jQuery для создания сложного веб-сайта. Мы хотели бы использовать JavaScript и jQuery на сервере (IIS) по следующим причинам:

  1. Передача навыков - мы хотели бы использовать JavaScript и jQuery на сервере, а не использовать, например, VB Script. / классический асп. Из-за этого исключается .Net Framework / Java и т. Д.

  2. Улучшены параметры поиска / доступности. Мы хотели бы иметь возможность использовать jQuery в качестве системы шаблонов, но это не подходит для поисковых систем и пользователей с отключенным js - если только мы не можем выборочно запускать этот код на сервере.

Существуют значительные инвестиции в IIS и Windows Server, поэтому изменить это не вариант.

Я знаю, что вы можете запускать jScript в IIS с помощью хоста Windows Script, но я не уверен в масштабируемости и процессе, связанном с этим. Я также не уверен, будет ли у этого доступ к DOM.

Вот диаграмма, которая, надеюсь, объясняет ситуацию. Мне было интересно, если кто-нибудь сделал что-нибудь подобное?

РЕДАКТИРОВАТЬ: я не ищу критиков по веб-архитектуре, я просто хочу знать, есть ли какие-либо варианты для манипулирования DOM страницы, прежде чем она будет отправлена ​​клиенту, с использованием JavaScript Jaxer - один из таких продуктов (без IIS). Спасибо.

Ответы [ 7 ]

6 голосов
/ 03 мая 2010

Взгляните на , выводящий браузер на сервер , Rhino и Использование Microsoft IIS в качестве движка сервлета Java .

Первая ссылка с блога Джона Ресига (создателя jQuery).

Обновление 2 августа 2011

Node.js подходит к Windows.

2 голосов
/ 27 апреля 2010

Идея повторного использования клиентского JS на сервере может звучать заманчиво, но я не уверен, что сам jQuery будет готов к работе в серверной среде.

Вам нужно как-то определить глобальный контекст для jQuery, инициализировав window, document, self, location, etc.. Я не уверен, что это выполнимо.

Кроме того, как уже упоминал Cheeso, Active Server Pages является очень устаревшей технологией, в начале века она была заменена ASP.Net компанией Microsoft. Раньше я поддерживал устаревшую систему с использованием ASP 3.0 более года, и это было больно. Самым замечательным занятием была отладка: сегодня вы вряд ли найдете что-либо для этой цели, и вам придется расшифровывать красивые ошибки, как в журнале IIS:

ошибка '800a9c68'
Ошибка приложения или объекта

Тем не менее, я могу подтвердить, что мне удалось повторно использовать клиентский и серверный JScript. Но это был код, написанный мной, который знал, что он будет использоваться на сервере.

P.S. Я бы не рекомендовал двигаться в этом направлении. Существует множество шаблонных сред, знакомых тем, кто пишет HTML и JavaScript.

1 голос
/ 03 мая 2010

Я думаю, что единственные жизнеспособные решения, которые вы, вероятно, найдете где-либо в готовом виде, - это использование IIS перед Java. Мне известно о двух браузерных средах, написанных для Java:

1) Env-js (см. http://groups.google.com/group/envjs и http://github.com/thatcher/env-js) Я полагаю, что этот материал предоставлен Джоном Резигом из jQuery и был разработан с учетом тестирования и поддержки jQuery.

2) HTMLUnit (см. http://htmlunit.sourceforge.net/). Он более старый и изначально не задумывался о jQuery, но есть сообщения о том, что он используется для успешного запуска набора тестов jQuery (* 1012). *).

Если вы хотите что-то чисто-IIS / MS, я думаю, что ваши наблюдения по поводу хоста windowsScript и / или чего-то наподобие полу-заброшенного JScript.NET, вероятно, примерно так же близки, как вы собираетесь, вместе с портом ( который вы, вероятно, должны начать) что-то вроде Env-js или HTMLUnit.

Кроме того, я не знаю, видели ли вы в Википедии список серверных JavaScript-решений:

http://en.wikipedia.org/wiki/Server-side_JavaScript

Наконец ... вы, вероятно, могли бы написать работоспособную jQuery-подобную библиотеку на любом языке, который уже имеет какую-то библиотеку DOM и первоклассные функции (или, если это не удалось, eval средство). Смотрите, например, pQuery для Perl (http://metacpan.org/pod/pQuery). Это даст вам преимущества манипулирования документами в стиле jQuery. Передача навыков великолепна, и JavaScript имеет замечательное сочетание очень хороших функций, но с другой стороны, наличие разработчиков, которые заботятся о том, чтобы выучить несколько языков, также прекрасно, и js - не единственный хороший язык там.

1 голос
/ 27 апреля 2010

JScript работает на IIS через что-то под названием ASP.
Страницы активного сервера.
Впервые он был доступен в 1996 году.

В конце концов ASP.NET был представлен как преемник. Но ASP все еще поддерживается.

Однако для HTML-страницы DOM не существует.

Возможно, вам придется немного пересмотреть свою архитектуру.

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

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

Jaxer от Aptana является первым веб-сервером AJAX. Я еще не пробовал, но буду. Выглядит многообещающе и очень мощно.

0 голосов
/ 27 апреля 2010

Что именно вы подразумеваете под

"Клиент использует JavaScript с jQuery для создания сложного сайта "

Половина jQuery заключается в том, чтобы облегчить разработчику манипулирование DOM и, следовательно, добавить интерактивные улучшения на веб-сайт. Запустив Javascript на сервере и выполнив только рендеринг HTML, вы потеряете возможность добавлять эти усовершенствования, не совершая циклическое переключение на сервер (подумайте, модель обратной передачи WebForms ... тьфу).

Теперь, если вы действительно имеете в виду, что клиент использует конструктор сайтов на основе jQuery, почему бы не использовать этот инструмент для вывода плоского HTML в первую очередь?

0 голосов
/ 27 апреля 2010

Я думаю, что это в основном скрипт на основе браузера, так что, вероятно, вам лучше использовать технологии на основе VB или .NET для выполнения или генерации HTML из шаблонов.Я уверен, что есть, потому что в мире Java есть несколько таких вокруг (как скорость).Затем вы будете использовать jQuery для создания или добавления функциональности и удобства использования на стороне клиента, чтобы сделать веб-сайт более удобным, чем он был бы.

...