从html页面调用nodejs脚本

时间:2011-07-24 14:28:13

标签: html node.js serverside-javascript server-side-scripting

我想调用node.js脚本,就像我使用php一样,只是使用他们的网址。

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

但是我直到现在看到的大部分教程都涉及创建服务器等......

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

一旦调用脚本应该返回或者一个页面用于渲染,或者只是json或其他文本用于ajax调用。

有可能吗?

4 个答案:

答案 0 :(得分:1)

  

但是我直到现在看到的大部分教程都涉及创建服务器等......

     

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

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

用PHP术语表达你的问题是

  

我可以在不安装apache / nginx /其他webserver

的情况下运行PHP脚本

你不能(我认为最近或未来的版本包括一个Web服务器,就像node.js一样!)

您需要安装node.js,您需要告诉节点运行Web服务器

但是,您可以使用expressjs进行更简化和熟悉的设置。然后,您只需在命令行上调用express即可将服务器挂起。

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

答案 1 :(得分:1)

Node.js和PHP是两回事。

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

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

换句话说,如果没有大量的hacky技巧, with node.js ,你不可能做的事情。

但是,如果您只想使用PHP的而不是,我会查看JS-CGI,它允许您使用Javascript作为CGI扩展。

答案 2 :(得分:1)

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

它实际上混合了两种样式,因此Node程序由Apache自动启动,但只要有处理请求就会保留。您只需设置一个规则,将您想要的页面重定向到dispatch.njs脚本,该脚本已在.htaccess中添加了AddType作为Node脚本,该脚本启动然后处理stdin上的请求并将结果发送到stdout。但是你仍然需要express提供的路由,因为它只是查看HTTP_REQUEST_URI以确定你想要的页面。

另一个选择是设置节点侦听某个端口,如果它们匹配某个特征(如.njs中的结尾),则从Apache代理请求它。

答案 3 :(得分: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 /../..