Node.js 简介

Node.js 是一个开源、跨平台的 JavaScript 运行时环境。它是一个适用于几乎任何类型项目的流行工具!

Node.js 在浏览器之外运行 V8 JavaScript 引擎,该引擎是 Google Chrome 的核心。这使得 Node.js 的性能非常高。

一个 Node.js 应用在单个进程中运行,不会为每个请求创建一个新线程。Node.js 在其标准库中提供了一组异步 I/O 原语,防止 JavaScript 代码阻塞。此外,Node.js 中的库通常使用非阻塞范式编写。因此,在 Node.js 中,阻塞行为是例外而非常规。

当 Node.js 执行 I/O 操作时,比如从网络读取、访问数据库或文件系统,Node.js 不会阻塞线程并浪费 CPU 周期等待,而是在响应返回时恢复操作。

这使得 Node.js 能够用单个服务器处理数千个并发连接,而无需引入管理线程并发的负担,后者可能是 bug 的重要来源。

Node.js 有一个独特的优势,因为数百万为浏览器编写 JavaScript 的前端开发者现在能够编写服务器端代码和客户端代码,而无需学习一门完全不同的语言。

在 Node.js 中,新的 ECMAScript 标准可以毫无问题地使用,因为您不必等待所有用户更新他们的浏览器——您可以通过更改 Node.js 版本来决定使用哪个 ECMAScript 版本,并且您还可以通过带标志运行 Node.js 来启用特定的实验性功能。

一个 Node.js 应用示例

最常见的 Node.js "Hello World" 示例是一个 Web 服务器

const {  } = ('node:http');

const  = '127.0.0.1';
const  = 3000;

const  = ((, ) => {
  . = 200;
  .('Content-Type', 'text/plain');
  .('Hello World');
});

.(, , () => {
  .(`Server running at http://${}:${}/`);
});

要运行此代码片段,请将其保存为 server.js 文件,并在终端中运行 node server.js。如果您使用代码的 mjs 版本,则应将其保存为 server.mjs 文件,并在终端中运行 node server.mjs

此代码首先引入了 Node.js 的 http 模块

Node.js 有一个出色的标准库,包括对网络的一流支持。

httpcreateServer() 方法会创建一个新的 HTTP 服务器并返回它。

服务器被设置为在指定的端口和主机名上监听。当服务器准备好时,回调函数会被调用,在本例中通知我们服务器正在运行。

每当收到新请求时,就会调用 request 事件,提供两个对象:一个请求(一个 http.IncomingMessage 对象)和一个响应(一个 http.ServerResponse 对象)。

这两个对象对于处理 HTTP 调用至关重要。

第一个提供请求的详细信息。在这个简单的例子中,这没有被使用,但您可以访问请求头和请求数据。

第二个用于向调用者返回数据。

在本例中,使用

. = 200;

我们将 statusCode 属性设置为 200,表示响应成功。

我们设置 Content-Type

res.setHeader('Content-Type', 'text/plain');

然后我们关闭响应,将内容作为参数添加到 end()

res.end('Hello World\n');

如果您还没有这样做,请下载 Node.js。

阅读时间
3 分钟
作者
贡献
编辑此页面
目录
  1. 一个 Node.js 应用示例