我想像使用 php 一样调用 node.js 脚本,这只是使用它们的 url。
我主要是一个 js 程序员,所以完全放弃 php 并使用 node 来编写服务器端脚本对我来说会很棒。
但是到目前为止我看到的大部分教程都涉及创建服务器等......
我只想以旧方式调用脚本,例如 www.mysite.com/login.js 而不是 www.mysite.com/login.php
一旦被调用,脚本应该返回一个用于渲染的页面或简单的 json 或其他用于 ajax 调用的文本。
是否可以?
我想像使用 php 一样调用 node.js 脚本,这只是使用它们的 url。
我主要是一个 js 程序员,所以完全放弃 php 并使用 node 来编写服务器端脚本对我来说会很棒。
但是到目前为止我看到的大部分教程都涉及创建服务器等......
我只想以旧方式调用脚本,例如 www.mysite.com/login.js 而不是 www.mysite.com/login.php
一旦被调用,脚本应该返回一个用于渲染的页面或简单的 json 或其他用于 ajax 调用的文本。
是否可以?
但是到目前为止我看到的大部分教程都涉及创建服务器等......
我只想以旧方式调用脚本,例如 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)
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 扩展。
你可以使用 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/../..
还有另一种可能性,类似于上面提到的 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).