вызывать скрипты nodejs из html-страниц - PullRequest
0 голосов
/ 24 июля 2011

Я бы хотел вызывать скрипты node.js, как я это делаю с php, то есть просто использую их URL.

Я в основном программист js, так что было бы замечательно, чтобы я отказался от phpполностью и использовать узел для сценариев на стороне сервера.

Но большая часть учебника, который я видел до сих пор, касалась создания сервера и т. д. *

Я просто хочу вызвать скрипт в старомКстати, как www.mysite.com/login.js вместо www.mysite.com/login.php

И однажды вызванный скрипт должен вернуть либо страницу для рендеринга, либо просто json или другой текст для вызовов ajax.

Возможно ли это?

Ответы [ 4 ]

1 голос
/ 24 июля 2011

Есть еще одна возможность, похожая на метод CGI, упомянутый выше, но с использованием модуля (https://github.com/samcday/node-fastcgi-application) в Node.js, который поддерживает FastCGI, который позволит Apache общаться с ним.

На самом деле он сочетает в себе оба стиля, так что программа Node автоматически запускается Apache, но остается там до тех пор, пока есть запросы для обработки. Вы просто устанавливаете правило для перенаправления страниц, которые вы хотите, в скрипт dispatch.njs, который вы добавили с помощью AddType в .htaccess в качестве скрипта Node, который запускает, а затем обрабатывает запросы к stdin и отправляет результаты в stdout. Но вам все еще нужна маршрутизация, предоставляемая Express, потому что он только смотрит на HTTP_REQUEST_URI, чтобы определить, какую страницу вы хотите.

Другой вариант - настроить Node на прослушивание определенного порта и прокси-запросы к нему от Apache, если они соответствуют определенной сигнатуре (например, оканчивается на .njs).

1 голос
/ 24 июля 2011

Node.js и PHP - это две разные вещи.

Node.js - это "управляемая событиями среда ввода-вывода на стороне сервера JavaScript". Когда он функционирует, Javascript не запускается как язык сценариев, он обрабатывается так же, как Ruby или Python. Вы запускаете сервер, и код запускается.

PHP, однако, запускается в качестве языка сценариев на веб-сервере, поскольку на веб-сервере установлен модуль процессора PHP. Поэтому вы можете запускать сценарии PHP напрямую с расширением .php, поскольку сервер Apache настроен на интерпретацию файлов .php как сценариев.

Другими словами, то, что вы хотели бы сделать, невозможно без большого количества хакерских трюков, с node.js .

Однако, если вы хотите просто использовать JavaScript вместо PHP, я бы выбрал JS-CGI , который позволяет использовать Javascript в качестве расширения CGI.

1 голос
/ 24 июля 2011

Но большая часть учебника, который я видел до сих пор, касалась создания сервера и т. Д. *

Я просто хочу назвать скрипт по-старому, например www.mysite.com/login.js вместо www.mysite.com/login.php

Вот так работает node.js. Вы создаете сервер. С помощью PHP первым шагом учебника является установка и настройка apache (создание сервера).

Эквивалент вашего вопроса в терминах PHP будет

Можно ли запускать скрипты PHP без установки apache / nginx / другого веб-сервера

Что вы не можете (я полагаю, что в недавней или будущей версии есть встроенный веб-сервер, такой же, как node.js!)

Вам нужно установить node.js, вам нужно указать узлу запустить веб-сервер

Однако вы можете использовать expressjs для более удобной и привычной настройки. Затем вы можете просто позвонить express в командной строке, чтобы освободить свой сервер.

Вам все еще нужно установить node.js (и npm)

0 голосов
/ 24 июля 2011

Вы можете использовать CGI.Примерно так:

#!/usr/local/bin/node

var sys=require("sys");
sys.puts("Content-type: text/html\n");
sys.puts("Hello World!<br/>\n");
var argstr="";
for(var i in process.env){
  argstr+=i+": " + process.env[i] + "<br/>\n";
}
sys.puts("args: "+ argstr +"<br/>\n");

Так же, как Perl / Python /../..

...