3

我正在编写一个简单的 Helloworld 示例,可以在 Internet 上随处找到:

[nodejs.php] [位置:localhost/nodejs.php]

<!DOCTYPE HTML>
<html>
    <head>
        <script type="text/javascript">
            var http = require('http');

            var server = http.createServer(function (request, response) {
              response.writeHead(200, {"Content-Type": "text/plain"});
              response.end("Hello World\n");
            }).listen(8000);

            console.log("Server running at http://127.0.0.1:8000/");
        </script>
    </head>


</html>

代码非常简单易懂。但是,当我尝试运行代码时,出现以下错误:

Uncaught ReferenceError: require is not defined 

我了解该消息意味着require()我的页面中没有此类功能。当然没有。我又翻了很多次谷歌,尝试了不同的教程,看看我是否需要nodejs.js在网页中嵌入任何类型的文件,但所有教程似乎都没有提到这一点,我尝试进入 Nodejs 文件夹。我发现了很多像edit.js, adduser.js, bin.js... 这样的文件,我被正式卡住了。我一遍又一遍地讨论了 Nodejs 的真正含义,以及为什么这个例子不起作用,但谷歌没有太多的支持。到目前为止,据我了解:

  • nodejs 是一个 javascript 工具包,它是事件驱动的、非阻塞 I/O
  • nodejs 允许用户使用 javascript 访问后端编码
  • nodejs 解析 V8 Google Chrome javascript 引擎
  • nodejs 可以创建并发服务器应用程序
  • 在我的假设中,nodeJS 是一个框架(它可能是错误的),它连接服务器和客户端以允许后端访问

如果我错了,请纠正我,我真的很感激。我需要对这个主题有更多的了解,而那里的资源并不多。

我的问题是:

  1. 如果 NodeJS 是一个 javascript 库,我如何将它嵌入到我的网站中?本地主机与在线托管有什么不同吗?
  2. 我经常看到人们处理listen(8000),端口是什么?我应该选择哪个端口?
  3. Socket.io 是否与 NodeJS 相同,如何安装(我知道 Socket.io 在 Nodejs 上运行)?带有 NodeJS 的 Socket.io 是否与带有 jQ​​uery 的 jQueryUI 一样抽象?为了将来参考,当我想在 NodeJS 中使用另一个库时,这样做的标准协议是什么?

谢谢大家,

蒂姆。

4

3 回答 3

7

我需要嵌入 NodeJS 吗?

不可以。您需要使用 Node 而不是 Web 浏览器来运行它。

如果 NodeJS 是一个 JavaScript 库

它不是

如何将其嵌入我的网站?

您可以将它安装在您的网络服务器上并在那里运行它(服务器端)。

本地主机与在线托管有什么不同吗?

我经常看到人们处理listen(8000),端口是什么?

如果您正在运行 TCP/IP 服务器,它必须侦听端口,以便将数据包发送到它。

我应该选择哪个端口?

一个没有被其他东西使用的

Socket.io 和 NodeJS 一样吗

不,它分为两部分。一部分使用 Node 在服务器上运行,另一部分在浏览器中运行。

如何安装它?

网站上有说明

带有 NodeJS 的 Socket.io 是否与带有 jQ​​uery 的 jQueryUI 一样抽象?

为了将来参考,当我想在 NodeJS 中使用另一个库时,这样做的标准协议是什么?

CommonJS

是否像 NodeJS(以愚蠢的解释方式)就像 PHP 一样。我的意思是,您使用 NodeJS 而不是 PHP?

简单来说,是的。

而不是寻找一个 PHP 主机,你需要一个 NodeJS 主机?

可能。我不知道是否有人提供 NodeJS 托管本身。当我想使用 Node 时,我会使用 VPS。

如果是这样,我可以开始安装 NodeJS 后的 htdocs(或任何类似的)文件夹在哪里?

NodeJS 不是 Web 服务器。它是一种运行 JavaScript 的方法。您可以用 JavaScript 编写 Web 服务器并通过 Node 运行它,这就是您问题中的代码所做的。该代码没有 htdocs 文件夹,因为它总是返回相同的硬编码响应。如果您希望它根据请求的 URL 从文件系统读取文件,那么您需要添加该功能(通过检查request对象并使用filesystem module .

它运行本地主机吗?

它可以在您想要的任何网络接口上运行。请参阅该方法listen()文档。由于您没有传递hostname参数,它将侦听所有接口(包括本地主机)。

于 2013-08-10T20:08:07.917 回答
2

介绍示例在http://nodejs.org/上进行了解释:

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 example.js
Server running at http://127.0.0.1:1337/

将代码块写入文件example.js(无 HTML),使用 运行它node example.js,打开浏览器并转到http://127.0.0.1:1337/

于 2013-08-11T01:48:03.917 回答
0

节点是服务器端,而不是客户端。您需要在提供这些文件的任何机器上运行它。所以不,你不能将它嵌入到某个页面上。在这里查看如何下载和配置它:http ://nodejs.org

于 2013-08-10T20:49:49.360 回答