【问题标题】:Basic idea behind node.js implementation?node.js 实现背后的基本思想?
【发布时间】:2013-03-23 22:41:56
【问题描述】:

这是我目前关于 node.js 将如何工作的理论:

  1. 我在我的服务器上安装了 node.js,以便它可以解释 javascript 文件。
  2. 然后我编写我的 javascript 文件并将它们放在我的服务器上(就像我使用 PHP 文件一样)。
  3. 然后我通过客户端 javascript 与这些文件进行交互。

显然我有什么问题,因为过去一个小时左右我一直在寻找一个教程,它将教我如何在我的服务器上安装它 - 但他们似乎都专注于在本地安装它。

有人可以简要说明最终实现的工作原理吗?

【问题讨论】:

    标签: javascript node.js server-side


    【解决方案1】:

    您可以像安装任何其他机器一样将它安装在“服务器”上——通过installerpackage manager 进行管理员/root 访问。

    现在,假设“服务器”指的是计算机。相反,如果您指的是现有的“服务器应用程序”,例如 Apache 或 IIS——Node.js 不会直接与这些集成。它主要替换它们,允许您从相当低的级别将整个服务器应用程序定义为脚本。

    这样的脚本可以在project's homepage上找到:

    这个用 Node 编写的简单 Web 服务器响应“Hello World” 每个请求。

    var http = require('http');
    http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Hello World\n');
    }).listen(1337, '127.0.0.1');
    console.log('Server running at http://127.0.0.1:1337/');
    

    要运行服务器,请将代码放入文件example.js 并从命令行使用node 程序执行它:

    % node example.js
    Server running at http://127.0.0.1:1337/
    

    除此示例外,您还需要检查req.methodreq.url,通常通过routerweb framework 确定如何响应。 expresscompoundjs 将是不错的选择。

    您仍然可以将其他服务器应用程序用作 Node.js 的 HTTP 代理,从而传递流量。但 Node.js 仍将单独运行。如果您使用的是 IIS,甚至还有 iisnode,它涵盖了大部分设置。

    【讨论】:

    • 感谢您的帮助!自从发布问题后,我发现(显然)即使我可以访问 SSH,我也无法在我的共享主机帐户上使用 node.js。这听起来对你吗?显然,即使我确实安装了它,我也不会被允许访问某些端口。
    • @JoeRocc 是的。您通常需要explicitly supports Node.js 的主机或升级到“private”或“dedicated”托管计划,以便您拥有更多控制权。
    • 抱歉回复晚了。好的,所以我的整个 node.js 服务器(计算机)将在一个脚本上运行?如果我想拥有多个网站怎么办?用户是否总是通过单个 node.js 脚本使用我的服务器,还是我以某种方式将某些 node.js 文件附加到不同的域?
    • @JoeRocc 听起来您正在寻找虚拟主机:stackoverflow.com/a/8503918。您可以使用一个node 进程运行多个http.Servers;他们只需要监听自己的端口即可。 Express 选项可以将它们进一步压缩为一个 http.Server
    【解决方案2】:

    Node.js 是一个服务器端 JavaScript 引擎,可让您使用 JavaScript 语言构建 Web 服务器。它类似于 Apache 上的 PHP 和 IIS 上的 C#。不同的是,Node.js 是基于事件的,它不会像 C# IIS 那样创建很多线程。因此,Node.js 具有处理高并发请求的潜力。 Node.js 教程可以参考 Node.js 网站:http://nodejs.org/api/

    然后我通过客户端 javascript 与这些文件进行交互。

    我不同意你的观点,因为 Node.js 所做的只是创建一个 Web 服务器,服务器和客户端之间的任何交互都是基于 HTTP 的,这意味着 Node.js Web 服务器从客户端响应你的请求。

    【讨论】:

    • 好的,我从教程中学到了这一点 - 但我不确定如何开始在我的服务器上实现。
    • 我建议你试试 express.js expressjs.com,它可以帮助你创建一个针对 Node.js 的 Web 服务器。
    猜你喜欢
    • 2012-06-13
    • 1970-01-01
    • 2011-07-14
    • 2023-04-08
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    相关资源
    最近更新 更多