Node.js - Web 模块

什么是 Web 服务器?

你好,有抱负的程序员们!今天,我们将深入了解 Web 服务器的精彩世界。可以把 Web 服务器想象成一个友好的图书管理员,随时准备递给你需要的书(或者在我们的例子中,是网页)。

Node.js - Web Module

Web 服务器是一种响应来自 Web 浏览器请求的软件。当你在浏览器中输入一个 URL 时,你实际上是在请求一个 Web 服务器给你一个特定的网页。然后服务器获取那个页面并返回给你的浏览器。

让我们用一个简单的类比来分解这个过程:

  1. 你(客户端)走进一个图书馆(互联网)。
  2. 你向图书管理员(Web 服务器)请求一本特定的书(一个网页)。
  3. 图书管理员找到书并交给你。
  4. 你阅读书籍(你的浏览器显示网页)。

简单吧?现在,让我们看看如何使用 Node.js 创建我们自己的 Web 服务器!

Web 应用程序架构

在开始编码之前,让我们了解一下 Web 应用程序的基本架构。这就像在建造房屋之前先了解房屋的设计蓝图。

一个典型的 Web 应用程序由三个主要组件组成:

  1. 客户端:这通常是发送请求到服务器的 Web 浏览器(如 Chrome 或 Firefox)。
  2. 服务器:这是我们运行 Node.js 应用程序的地方。它接收来自客户端的请求并发送响应。
  3. 数据库:这是我们存储和检索数据的地方。我们在这个教程中不会涉及数据库,但知道它们的存在是有用的!

下面是一个简单的图示来说明这一点:

[客户端] <--> [服务器] <--> [数据库]

箭头代表这些组件之间的数据流。酷吧?

使用 Node 创建 Web 服务器

现在,让我们动手用 Node.js 创建一个简单的 Web 服务器。别担心如果你之前从未编写过代码——我们会一步步来!

首先,我们需要使用 Node 的内置 http 模块。这个模块允许我们创建一个可以处理 HTTP 请求的服务器。

const http = require('http');

const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('你好,世界!');
});

server.listen(3000, 'localhost', () => {
console.log('服务器运行在 http://localhost:3000/');
});

让我们分解一下:

  1. 我们 requirehttp 模块,它为我们提供了创建服务器的工具。
  2. 我们使用 http.createServer() 创建一个新的服务器。这个函数接受一个回调函数,每次服务器收到请求时都会执行它。
  3. 在回调函数中,我们设置状态码为 200(意味着“正常”),设置内容类型为纯文本,并发送 "你好,世界!" 作为响应。
  4. 最后,我们告诉服务器在本地主机的 3000 端口上监听。

要运行这个服务器,将代码保存在一个文件中(我们可以称之为 server.js),打开终端,导航到包含该文件的目录,并运行:

node server.js

现在,如果你打开浏览器并访问 http://localhost:3000,你应该会看到 "你好,世界!"。恭喜你,你刚刚创建了你的第一个 Web 服务器!

使用 Node 创建 Web 客户端

现在我们有了服务器,让我们创建一个可以发送请求到它的客户端。在现实世界中,这通常是一个 Web 浏览器,但我们也可以使用 Node.js 创建一个简单的客户端。

下面是一个向我们的服务器发送 GET 请求的简单客户端:

const http = require('http');

const options = {
hostname: 'localhost',
port: 3000,
path: '/',
method: 'GET'
};

const req = http.request(options, (res) => {
console.log(`statusCode: ${res.statusCode}`);

res.on('data', (d) => {
process.stdout.write(d);
});
});

req.on('error', (error) => {
console.error(error);
});

req.end();

让我们分解一下:

  1. 我们再次 requirehttp 模块。
  2. 我们设置了请求的选项,包括主机名、端口、路径和方法。
  3. 我们使用 http.request() 创建一个请求,传入我们的选项和一个回调函数。
  4. 在回调函数中,我们记录状态码并设置一个事件监听器来处理 'data' 事件,这将记录从服务器收到的任何数据。
  5. 我们还设置了一个错误处理程序。
  6. 最后,我们调用 req.end() 来发送请求。

将此代码保存在一个名为 client.js 的文件中,并使用 node client.js 运行它。你应该会在终端看到状态码(200)和服务器的消息("你好,世界!")。

结论

恭喜你!你刚刚使用 Node.js 创建了你的第一个 Web 服务器和客户端。这只是一角冰山,但这是一个很好的开始。在你继续 Web 开发的旅程中,你将学习如何处理不同类型的请求、服务 HTML 页面、与数据库工作等等。

记住,每个专家都曾经是一个初学者。继续练习,继续学习,最重要的是,享受乐趣!Web 开发的世界是广阔和令人兴奋的,而你刚刚迈出了第一步。快乐编码!

Credits: Image by storyset