0

我想像使用 php 一样调用 node.js 脚本,这只是使用它们的 url。

我主要是一个 js 程序员,所以完全放弃 php 并使用 node 来编写服务器端脚本对我来说会很棒。

但是到目前为止我看到的大部分教程都涉及创建服务器等......

我只想以旧方式调用脚本,例如 www.mysite.com/login.js 而不是 www.mysite.com/login.php

一旦被调用,脚本应该返回一个用于渲染的页面或简单的 json 或其他用于 ajax 调用的文本。

是否可以?

4

4 回答 4

1

但是到目前为止我看到的大部分教程都涉及创建服务器等......

我只想以旧方式调用脚本,例如 www.mysite.com/login.js 而不是 www.mysite.com/login.php

这就是 node.js 的工作方式。您创建一个服务器。使用 PHP 教程的第一步是安装和设置 apache(创建服务器)。

你的问题在 PHP 术语中的等价物是

我可以在不安装 apache/nginx/其他网络服务器的情况下运行 PHP 脚本吗

你不能(我相信最近或未来的版本包括一个内置的网络服务器,就像 node.js 一样!)

你需要安装 node.js,你需要告诉 node 运行一个 web 服务器

但是,您可以使用expressjs进行更简化和熟悉的设置。然后,您可以只调用express命令行来搭建您的服务器。

你仍然需要安装 node.js(和 npm)

于 2011-07-24T14:42:44.593 回答
1

Node.js 和 PHP 是两个不同的东西。

Node.js 是一个“事件驱动的 I/O 服务器端 JavaScript 环境”。当它运行时,Javascript 不作为脚本语言运行,它像 Ruby 或 Python 一样被处理。您启动一个服务器,然后运行代码。

然而,PHP 在 Web 服务器上作为脚本语言运行,因为 Web 服务器上安装了 PHP 处理器模块。因此,您可以通过 .php 扩展名直接运行 PHP 脚本,因为 Apache 服务器被配置为将 .php 文件解释为脚本。

换句话说,如果没有大量的 hacky 技巧,使用 node.js是不可能实现的。

但是,如果您只想使用 JavaScript而不是PHP,我会查看JS-CGI,它允许您使用 Javascript 作为 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 回答
1

还有另一种可能性,类似于上面提到的 CGI 方法,但在 Node.js 中使用支持 FastCGI 的模块(https://github.com/samcday/node-fastcgi-application),这将允许 Apache 与之对话。

它实际上融合了两种风格,因此 Node 程序由 Apache 自动启动,但只要有要处理的请求就会一直存在。您只需设置一个规则,将您想要的页面重定向到一个 dispatch.njs 脚本,您已在 .htaccess 中使用 AddType 作为 Node 脚本添加该脚本,该脚本启动并处理标准输入上的请求并将结果发送到标准输出。但是您仍然需要 express 提供的路由,因为它只查看 HTTP_REQUEST_URI 来确定您想要的页面。

Another option would be to setup Node listening on a certain port and proxy requests to it from Apache if they match a certain signature (like ends in .njs).

于 2011-07-24T17:13:35.090 回答