0

phpと同じようにnode.jsスクリプトを呼び出したいのですが、それは単にURLを使用しているだけです。

私は主にjsプログラマーなので、phpを完全に捨てて、サーバー側のスクリプトにノードを使用するのは素晴らしいことです。

しかし、これまでに見たチュートリアルのほとんどは、サーバーの作成などに関係していました...

www.mysite.com/login.phpの代わりにwww.mysite.com/login.jsのように、古い方法でスクリプトを呼び出したいだけです。

そして、一度呼び出されると、スクリプトはレンダリング用のページ、またはajax呼び出し用のjsonまたはその他のテキストを返す必要があります。

出来ますか?

4

4 に答える 4

1

上記のCGIメソッドと同様の別の可能性がありますが、Apacheが通信できるようにするFastCGIをサポートするNode.jsのモジュール(https://github.com/samcday/node-fastcgi-application)を使用します。

実際には両方のスタイルがブレンドされているため、NodeプログラムはApacheによって自動的に起動されますが、処理する要求がある限りそのままになります。必要なページをdispatch.njsスクリプトにリダイレクトするルールを設定するだけです。このスクリプトは、.htaccessのAddTypeでノードスクリプトとして追加しました。このスクリプトは、stdinでリクエストを起動して処理し、結果をstdoutに送信します。ただし、必要なページを決定するためにHTTP_REQUEST_URIのみを参照しているため、expressによって提供されるルーティングが必要です。

別のオプションは、特定のポートでリッスンするノードを設定し、特定の署名(.njsで終わるなど)に一致する場合にApacheからのノードへのプロキシ要求を設定することです。

于 2011-07-24T17:13:35.090 に答える
1

しかし、今まで見たチュートリアルのほとんどは、サーバーの作成などに関係していました...

www.mysite.com/login.php の代わりに www.mysite.com/login.js のように、古い方法でスクリプトを呼び出したいだけです。

これが node.js の仕組みです。サーバーを作成します。PHP を使用する場合、チュートリアルの最初のステップは、Apache をインストールしてセットアップすることです (サーバーの作成)。

PHP用語での質問の同等物は次のようになります

apache/nginx/other webserver をインストールせずに PHP スクリプトを実行できますか?

これはできません (最近または将来のバージョンには、 node.js のように Web サーバーが組み込まれていると思います!)

node.jsをインストールする必要があり、ノードにWebサーバーを実行するように指示する必要があります

ただし、expressjsを使用して、より合理的で使い慣れたセットアップを行うことができます。expressその後、コマンド ラインで呼び出すだけで、サーバーをスキャフォールディングできます。

node.js (および npm) をインストールする必要があります。

于 2011-07-24T14:42:44.593 に答える
1

Node.js と PHP は 2 つの異なるものです。

Node.js は「イベント駆動型 I/O サーバー側 JavaScript 環境」です。それが機能するとき、Javascript はスクリプト言語として実行されるのではなく、Ruby や Python のように処理されます。サーバーを起動すると、コードが実行されます。

ただし、Web サーバーには PHP プロセッサ モジュールがインストールされているため、PHP は Web サーバー上でスクリプト言語として実行されます。したがって、Apache サーバーは .php ファイルをスクリプトとして解釈するように構成されているため、PHP スクリプトを .php 拡張子で直接実行できます。

言い換えれば、あなたがやりたいことは、node.js を使った大量のハッキーなトリックなしでは不可能です。

ただし、PHP の代わりに JavaScript だけを使用したい場合は、Javascript を CGI 拡張として使用できるようにするJS-CGIを調べてください。

于 2011-07-24T14:43:29.993 に答える
1

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/../..のように

于 2011-07-24T15:03:36.223 に答える