Helloworld示例无法运行 - 我需要嵌入NodeJS吗?

27 浏览
0 Comments

Helloworld示例无法运行 - 我需要嵌入NodeJS吗?

我正在写一个简单的Helloworld示例,这个示例在互联网上随处可见:

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

代码:



    
        
    

这段代码非常直观易懂。然而,当我尝试运行代码时,出现了以下错误:

Uncaught ReferenceError: require is not defined

我理解这个错误的意思是我的页面中没有像`require()`这样的函数。当然是没有的。我多次查阅了谷歌并尝试了不同的教程,想找出是否需要在网页中嵌入任何`nodejs.js`文件,但是所有的教程似乎都没有提到这一点,而且我已经尝试进入Nodejs文件夹了。我发现了很多像`edit.js`、`adduser.js`、`bin.js`之类的文件...我完全被卡住了。我一遍又一遍地阅读Nodejs是什么,以及为什么这个示例不起作用,但是谷歌上没有太多支持。到目前为止,我理解的是:

- nodejs是一个事件驱动的、非阻塞I/O的JavaScript工具包

- nodejs允许用户使用JavaScript访问后端编码

- nodejs解析V8 Google Chrome JavaScript引擎

- nodejs可以创建并发的服务器应用程序

- 根据我的假设,nodeJS是一个框架(这可能是错误的),它连接服务器和客户端以允许后端访问

如果我理解有误,请纠正我,我非常感激。在这个领域中,资源并不多,我需要更多的知识。

我的问题是:

1. 如果NodeJS是一个JavaScript库,我如何将它嵌入到我的网站中?本地主机和在线主机有什么区别吗?

2. 我经常看到人们使用`listen(8000)`,端口是什么意思?我应该选择哪个端口?

3. Socket.io和NodeJS是一样的吗?如何安装它(我了解Socket.io运行在Nodejs上)?Socket.io和NodeJS一样,就像jQueryUI和jQuery一样抽象吗?以备将来参考,当我想要使用其他库与NodeJS一起使用时,有哪些标准协议?

谢谢大家,

Tim.

0
0 Comments

Helloworld example doesn't work - Do I need to embed NodeJS?

在使用Helloworld示例时遇到问题——我需要嵌入NodeJS吗?

问题原因:

Node是服务器端的,而不是客户端的。您需要在提供这些文件的任何机器上运行它。因此,不能将其嵌入到某个页面中。

解决方法:

1. 首先,需要下载和配置NodeJS。您可以在官方网站http://nodejs.org上找到有关如何下载和配置的详细信息。

2. 根据下载的版本和操作系统,执行相应的安装步骤。

3. 安装完成后,打开终端或命令提示符窗口,输入以下命令来验证NodeJS是否正确安装:

node -v

如果出现类似于"v14.15.4"的版本号,则说明NodeJS已成功安装。

通过按照上述步骤下载和配置NodeJS,您就可以在服务器上运行NodeJS,并使用Helloworld示例代码了。

0
0 Comments

Helloworld example doesn't work - Do I need to embed NodeJS?

问题原因:

这个问题的原因是由于用户尝试在网页中嵌入NodeJS,但是NodeJS不是一个javascript库,它是一种运行JavaScript的方式。

解决方法:

用户需要在服务器端安装NodeJS并在服务器上运行,而不是在网页浏览器中运行。

更多解答:

用户还提到了一些与NodeJS相关的问题,以下是对这些问题的解答:

  • If NodeJS is a javascript library: 它不是
  • how can I embed it to my website?: 你可以在Web服务器上安装并运行NodeJS(服务器端)
  • Is there any different from localhost versus online hosting?: 没有
  • I often see people dealing with listen(8000), what is the port about?: 如果你运行一个TCP/IP服务器,它必须监听一个端口,以便可以将数据包发送给它
  • Which port should I choose?: 选择一个未被其他程序使用的端口
  • Is Socket.io the same as NodeJS: 不是,Socket.io包括两个部分,一个部分在服务器上与Node一起运行,另一个部分在浏览器中运行
  • how to install it?: 在官方网站上有相关的安装说明
  • Is Socket.io with NodeJS as same as jQueryUI with jQuery abstractly?: 不是
  • For future reference, when I would like to use another library with NodeJS, what are the standard protocols to do so?: 使用CommonJS是一种标准的做法
  • So is it like NodeJS (in the foolish way of explanation) is just like PHP. I mean, instead of PHP, you use NodeJS?: 简单来说,是的
  • And instead of finding a PHP host, you need a NodeJS host?: 可能吧。我不知道是否有人专门提供NodeJS主机。当我想使用Node时,我会使用VPS。
  • If so, where is the htdocs (or anything similar) folder of NodeJS after installing it that I can start?: NodeJS不是一个Web服务器,它是一种运行JavaScript的方式。你可以使用JavaScript编写一个Web服务器,并通过Node运行它,这就是你提问中的代码所做的。该代码没有一个像htdocs这样的文件夹,因为它总是返回相同的硬编码响应。如果你想根据请求的URL从文件系统中读取文件,那么你需要添加相应的功能(通过检查request对象并使用文件系统模块)。
  • And does it run Localhost?: 它可以在任何你想要的网络接口上运行。请参考listen()方法的文档。由于你没有传递hostname参数,它将监听所有接口(包括localhost)。

最后,用户还向其他用户请教了关于浏览器和NodeJS的一些概念:

  • What do you mean exactly by "and not using a browser"? And how would I determine whether a port is used or not? I'm sorry, those concepts are new to me.: 你使用Node代替Chrome / Firefox / Opera / Safari / Internet Explorer等浏览器。你通常可以通过知道你的计算机上运行的服务器软件来确定一个端口是否空闲。
  • I'm quite clear on the port now. But about the Chrome, if it is design for webpage, and you don't use browser, how can you display those contents and interact with it? It is very confusing to me.: 你可以将数据输出到命令行,或者使用提供GUI(如GTK)的库,或者监听网络并将输出发送到网络客户端(例如使用HTTP协议的Web浏览器)。
0
0 Comments

问题出现的原因是用户不清楚如何使用NodeJS来构建一个与网页交互的服务器。用户将NodeJS简单地看作一个类似Apache或XAMPP的服务器,但是不知道如何开始使用它。用户希望知道如何在本地的index.html文件中使用NodeJS函数,并且想知道是否需要启动NodeJS服务器以及server.js文件(hello world示例)如何与网页交互。

解决方法是用户可以在server.js文件中编写内部函数来读取所需的文件,并将数据写入响应中。用户可以参考gist.github.com/rpflorence/701407中的简单示例来了解如何实现这一点。通过这种方式,用户可以通过请求http://127.0.0.1:1337/来自动请求服务器上的文件。用户可以使用url.parse(request.url).pathname来检查请求的路径是否与所需文件的路径匹配。这样,用户可以通过修改server.js文件中的代码来实现与网页的交互。

通过以上的解释,用户明确了NodeJS监听的端口与JavaScript和服务器之间的连接之间的关系,并理解了为什么在使用Apache时不需要显示指定端口。最后,用户表示对以上答案非常满意,希望能够将两个回答都标记为官方回答。

0