开始用 Node.js 编程

本文介绍如何使用Node.js创建HelloWorld程序及HTTP服务器,演示了控制台操作、REPL模式使用及HTTP服务器搭建过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hello World程序

好了,让我们开始实现第一个 Node.js 程序吧。打开你常用的文本编辑器,在其中输入:

console.log('Hello World');

将文件保存为 HelloWorld.js,打开终端,进入 HelloWorld.js 所在的目录,执行以下命令:
这里写图片描述

如果一切正常,你将会在终端中看到输出 Hello World。很简单吧?下面让我们来解 释一下这个程序的细节。console 是 Node.js 提供的控制台对象,其中包含了向标准输出写 入的操作,如 console.log、console.error 等。console.log 是我们常用的输出 指令,它和 C 语言中的 printf 的功能类似,也可以接受任意多个参数,支持 %d、%s 变 量引用,例如:

console.log('%s: %d', 'Hello', 25); 

这里写图片描述

Node.js 命令行工具

在前面的 Hello World 示例中,我们用到了命令行中的 node 命令,输入 node --help 可以看到详细的帮助信息:
这里写图片描述

其中显示了 node 的用法,运行 Node.js 程序的基本方法就是执行 node script.js, 其中 script.js是脚本的文件名。
除了直接运行脚本文件外,node –help 显示的使用方法中说明了另一种输出 Hello World 的方式:
这里写图片描述
我们可以把要执行的语句作为 node -e 的参数直接执行。

使用 node 的 REPL 模式 REPL (Read-eval-print loop),即输入—求值—输出循环。如果你用过 Python,就会知 道在终端下运行无参数的 python 命令或者使用 Python IDLE 打开的 shell,可以进入一个即 时求值的运行环境。Node.js 也有这样的功能,运行无参数的 node 将会启动一个 JavaScript 的交互式 shell:
这里写图片描述

进入 REPL 模式以后,会出现一个“>”提示符提示你输入命令,输入后按回车,Node.js 将会解析并执行命令。如果你执行了一个函数,那么 REPL 还会在下面显示这个函数的返回 值,上面例子中的 undefined 就是 console.log 的返回值。如果你输入了一个错误的 指令,REPL 则会立即显示错误并输出调用栈。在任何时候,连续按两次 Ctrl + C 即可推出 Node.js 的 REPL 模式。 node 提出的 REPL 在应用开发时会给人带来很大的便利,例如我们可以测试一个包能 否正常使用,单独调用应用的某一个模块,执行简单的计算等。

建立 HTTP 服务器

Node.js 是为网络而诞生的平台,但又与 ASP、PHP 有很大的不同,究竟不同在哪里呢? 如果你有 PHP 开发经验,会知道在成功运行 PHP 之前先要配置一个功能强大而复杂的 HTTP 服务器,譬如 Apache、IIS 或 Nginx,还需要将 PHP 配置为 HTTP 服务器的模块,或者使用 FastCGI 协议调用 PHP 解释器。这种架构是“浏览器 —— HTTP 服务器 —— PHP 解释器”的组织 方式,而Node.js采用了一种不同的组织方式。
这里写图片描述
我们看到,Node.js 将“HTTP服务器”这一层抽离,直接面向浏览器用户。这种架构 从某种意义上来说是颠覆性的。

让我们创建一个 HTTP 服务器吧。建立一个名为 app.js 的文件,内容 为:

var http = require('http');

http.createServer(function(req,res){
    res.writeHead(200,{'Content-Type' : 'text/html'});
    res.write('<h1>Node.js</h1>');
    res.end('<p>Hello World</p>');
}).listen(3000);

console.log("HTTP server is listening at port 3000.");

这里写图片描述
接下来运行 node app.js命令,打开浏览器访问 :
这里写图片描述

用 Node.js 实现的简单的 HTTP 服务器就这样诞生了。这个程序调用了 Node.js 提供的 http 模块,对所有 HTTP 请求答复同样的内容并监听 3000 端口。在终端中运行这个脚本 时,我们会发现它并不像 Hello World 一样结束后立即退出,而是一直等待,直到按下 Ctrl + C 才会结束。这是因为 listen 函数中创建了事件监听器,使得 Node.js 进程不会退出事件循环。

使用 supervisor

如果你有 PHP 开发经验,会习惯在修改 PHP 脚本后直接刷新浏览器以观察结果,而你 在开发 Node.js 实现的 HTTP 应用时会发现,无论你修改了代码的哪一部份,都必须终止 Node.js 再重新运行才会奏效。这是因为 Node.js 只有在第一次引用到某部份时才会去解析脚 本文件,以后都会直接访问内存,避免重复载入,而 PHP 则总是重新读取并解析脚本(如 果没有专门的优化配置)。Node.js的这种设计虽然有利于提高性能,却不利于开发调试,因 为我们在开发过程中总是希望修改后立即看到效果,而不是每次都要终止进程并重启。 supervisor 可以帮助你实现这个功能,它会监视你对代码的改动,并自动重启 Node.js。 使用方法很简单,首先使用 npm 安装 supervisor:

$ npm install -g supervisor 

这里写图片描述

如果你使用的是 Linux 或 Mac,直接键入上面的命令很可能会有权限错误。原因是 npm 需要把 supervisor 安装到系统目录,需要管理员授权,可以使用 sudo npm install -g supervisor 命令来安装。

接下来,使用 supervisor 命令启动 app.js:
这里写图片描述

当代码被改动时,运行的脚本会被终止,然后重新启动。在终端中显示的结果如下:

这里写图片描述

supervisor 这个小工具可以解决开发中的调试问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值