2011-07-24 156 views
0

我想調用node.js腳本,就像我用php做的那樣,簡單地使用它們的url。從html頁面調用nodejs腳本

我主要是一個js程序員,所以對我來說完全消滅php並將節點用於服務器端腳本將會很棒。

但大多數教程中,我看到了至今參與創建服務器,等...

我只是想調用的腳本以舊的方式,像www.mysite.com/login.js代替www.mysite.com/login.php

而且一旦被調用腳本應該返回或者頁面進行渲染或者簡單地用json或者其他文本進行ajax調用。

可能嗎?

+2

node.js服務器很容易設置 - 它提供了您需要的功能。只要做一個http服務器的教程,這將需要你半小時,你會明白爲什麼它是這樣設置的。 –

回答

1

還有另一種可能性,類似於上面提到的CGI方法,但使用一個模塊(https://github.com/ samcday/node-fastcgi-application)在Node.js中支持FastCGI,這將允許Apache與它通信。

它實際上融合了這兩種風格,所以Node程序由Apache自動啓動,但只要有處理請求就會停留。您只需設置一個規則,將您想要的頁面重定向到dispatch.njs腳本,該腳本已作爲Node腳本添加到.htaccess中的AddType中,該腳本啓動並處理stdin上的請求並將結果發送到stdout。但是你仍然需要express提供的路由,因爲它只查看HTTP_REQUEST_URI來確定你想要的頁面。

另一種選擇是設置節點監聽某個端口和代理服務器對Apache的請求(如果它們匹配某個簽名(如以.njs結尾))。

1

但大多數教程中,我看到了至今參與創建服務器,等...

我只是想叫老方式的腳本,像www.mysite.com/login.js的而不是www.mysite.com/login.php

這就是node.js的工作原理。你創建一個服務器。使用PHP,教程的第一步是安裝並設置apache(創建服務器)。

在PHP方面的問題的equivelant將

我可以運行PHP腳本沒有安裝Apache/nginx的/ web服務器等

,你不能(我認爲最近或將來版本包括一個Web服務器烘烤,就像Node.js的!)

你需要安裝的node.js,你需要告訴節點運行一個Web服務器

但是,您可以使用expressjs進行更簡化和熟悉的設置。然後,您可以在命令行上撥打express將您的服務器支架卸下。

你仍然需要安裝的Node.js(和NPM)

+0

是的,但後來我的問題更具體是:有一個像apache這樣的預製服務器,可以讓我使用節點腳本(及其所有模塊),就像使用php一樣? – Bakaburg

+0

@Bakaburg它叫做node.js.像其他人一樣使用node.js。這個「預製服務器」沒有任何價值。 – Raynos

1

的Node.js和PHP是兩回事。

Node.js是一個「事件驅動的I/O服務器端JavaScript環境」。當它運行時,Javascript不會作爲腳本語言運行,它可以像Ruby或Python一樣進行處理。你啓動一個服務器,並運行代碼。

但是,PHP作爲Web服務器上的腳本語言運行,因爲Web服務器上安裝了PHP處理器模塊。因此,您可以通過.php擴展名直接運行PHP腳本,因爲Apache服務器被配置爲將.php文件解釋爲腳本。

換句話說,如果沒有大量的hacky技巧,和node.js,你想要做什麼是不可能的。但是,如果您只想使用PHP的而不是,那麼我會檢查JS-CGI,它允許您將Javascript用作CGI擴展。

+0

就是這樣。我看到了js-cgi,但它看起來很不成熟。節點的好處是,有大量的文件系統模塊,數據庫處理等。 有沒有任何預製項目允許我使用節點作爲簡單的服務器端腳本庫? – Bakaburg

0

您可以使用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的/../ ..

+0

我不知道我是否得到了這個...... – Bakaburg

+1

如果您使用的是Apache2,請啓用CGI:http://httpd.apache.org/docs/2.0/howto/cgi.html 然後複製並粘貼上面的代碼轉換成服務器上的文件,即:test.cgi。確保文件是可執行文件(chmod a + x test.cgi)。在您的瀏覽器中打開它。 我的例子:http://www.halcyon-interactive.nl/public/node-test.cgi?variable=1 – micha

+0

當然,我必須先安裝節點!? – Bakaburg