Skip to content

Node.js 第一个应用程序

在用 Node.js 构建我们的“Hello, World!”应用之前,让我们先理解一个简单的 Node.js Web 服务器的基本组成部分。一个基础的 Node.js 应用通常包含以下步骤:

  1. 导入必需的模块(modules):使用 require 函数(适用于传统的 Node.js 默认使用的 CommonJS 模块)或 import 语句(适用于 ES 模块)加载必需的 Node.js 核心模块(core modules)或第三方库。
  2. 创建一个 HTTP 服务器(HTTP server):实例化一个服务器对象,该对象能够监听传入的客户端请求(client requests),类似于 Nginx 或 Apache 等 Web 服务器。
  3. 处理请求并发送响应(Handle requests and send responses):服务器需要逻辑来处理传入的 HTTP 请求(例如,来自 Web 浏览器),并发送回适当的 HTTP 响应。

创建一个基础的 Node.js HTTP 服务器

Section titled “创建一个基础的 Node.js HTTP 服务器”

我们使用 require 函数加载 Node.js 内置的 http 模块。这个模块提供了用于创建 HTTP 服务器和客户端的类和函数。我们将模块的导出存储在一个名为 http 的常量中。

const http = require('http');

注意:现代 JavaScript 通常使用 const 表示不会重新赋值的变量,使用 let 表示可能会重新赋值的变量。尽管 var 仍然可用,但 const 和 let 提供了更好的作用域控制,通常更受青睐。

接下来,我们使用 http.createServer() 方法。这个方法接受一个回调函数(callback function,通常称为请求监听器 request listener),该函数将在服务器每次收到新请求时执行。回调函数接收两个参数:一个 request 对象(包含有关传入请求的信息)和一个 response 对象(用于将数据发送回客户端)。

在回调函数内部,我们使用 response.writeHead() 设置 HTTP 状态码(status code)为 200 (OK),并设置 Content-Type 头部(header)为 text/plain。然后,我们使用 response.end() 发送响应体(response body)“Hello World\n”。最后,我们链式调用 .listen() 方法,使服务器开始监听特定端口(port)(例如 3000)和主机名(hostname)(例如 ‘127.0.0.1’ 代表 localhost)上的连接。

const server = http.createServer((request, response) => {
// 设置响应的 HTTP 头部,包括 HTTP 状态码和内容类型
response.writeHead(200, {
'Content-Type': 'text/plain'
});
// 发送响应体 "Hello World"
response.end('Hello World\n');
});
const port = 3000;
const host = '127.0.0.1';
server.listen(port, host, () => {
// 服务器开始监听后,在控制台输出一条消息
console.log(`Server running at http://${host}:${port}/`);
});

这段代码创建了一个 HTTP 服务器,它监听本地机器上的 3000 端口。使用 3000 端口是本地开发服务器的常见约定,可以避免与使用 80 或 8080 等默认端口的服务发生潜在冲突。

将完整的代码(步骤 1 和步骤 2 合并)保存到一个名为 server.js 的文件中:

const http = require('http');
const server = http.createServer((request, response) => {
// 设置响应的 HTTP 头部,包括 HTTP 状态码和内容类型
response.writeHead(200, {
'Content-Type': 'text/plain'
});
// 发送响应体 "Hello World"
response.end('Hello World\n');
});
const port = 3000;
const host = '127.0.0.1'; // 等同于 'localhost'
server.listen(port, host, () => {
// 服务器开始监听后,在控制台输出一条消息
console.log(`Server running at http://${host}:${port}/`);
});

现在,打开你的终端(terminal)或命令提示符(command prompt),切换到保存 server.js 的目录,然后使用 Node.js 运行时(runtime)运行应用:

$ node server.js

你应该在控制台看到以下输出,这表明服务器已成功启动:

Server running at http://127.0.0.1:3000/

打开你的 Web 浏览器,访问 http://127.0.0.1:3000/(或 http://localhost:3000/)。你应该能在页面上看到文本 “Hello World”。

恭喜!你已成功创建并运行了你的第一个基础 Node.js HTTP 服务器。这个服务器会用相同的简单消息响应所有请求。在实际应用中,通常会使用 Express.js 或 Fastify 等框架(frameworks)更容易地处理路由(routing)、中间件(middleware)和其他复杂任务,但理解这个基础示例至关重要。