Node.js 概述
了解 Node.js 的各个组成部分。
在本章中,我们将专注于课程管理应用的后端开发。通过搭建 Node.js 环境、安装所需依赖包、组织项目结构,并实现前后端的连接,完成整个后端系统的构建。在进入具体的代码编写之前,我们先简要了解 Node.js 的基本概念及其主要特性。
什么是 Node.js?
Node.js 由 Ryan Dahl 大约 12 年前创建,是一个基于 Google Chrome V8 引擎的强大开源服务器端平台。
它使得 JavaScript 可以在服务器端运行,能够用于构建多种类型的应用程序,例如实时聊天应用、Web 应用、数据流应用、单页应用等。需要特别说明的是,Node.js 并不是一种编程语言,而是一个 JavaScript 运行时环境。其核心特性如下:
内置模块
Node.js 提供了一些无需通过 npm 安装即可直接使用的内置模块。我们可以通过 require 或 import 语法来引入这些模块:
1const http = require('http');
以下是部分常用的内置模块:
Node.js 的内置模块
| 内置模块 | 说明 |
|---|---|
| http | 用于在 Node.js 中创建 HTTP 服务器。 |
| https | 用于在 Node.js 中创建 HTTPS 服务器。 |
| buffer | 用于处理包含二进制数据的流。 |
| dns | 用于连接 DNS 服务器并执行域名解析操作。 |
| fs | 用于操作文件系统。 |
| url | 提供解析 URL 的工具函数。 |
| path | 提供处理文件路径的方法。 |
| events | 用于事件的处理与监听。 |
| stream | 用于数据流的处理与传输。 |
跨平台兼容性
由于 Node.js 应用使用 JavaScript 编写,因此可以在 Windows、Linux 和 macOS 等多种操作系统上运行。这一特性大大简化了开发流程,使代码可跨平台复用,适用于 Web 应用以及 Windows、macOS 和 Linux 的桌面版本。
单线程模型
Node.js 采用单线程模型,类似于 JavaScript 的运行机制。它通过事件循环(event loop)来处理多个并发客户端请求,从而高效地应对大量并发访问,相比传统服务器具有更高的性能表现。
异步特性
同步编程是指任务按顺序依次执行,一个任务必须等待前一个完成后才能开始。这是传统的编程方式。而异步编程允许任务独立运行,彼此之间无依赖关系。在 Node.js 中,所有 API 都是异步的。当服务器调用某个 API 且尚未返回结果时,服务器会立即转向下一个可用的 API,继续执行后续操作,不会阻塞等待。
调试工具
Node.js 自带一个基础调试器,虽然功能不如专业工具全面,但足以进行简单的代码检查。可通过在终端中使用 inspect 参数来启动调试模式。例如,要调试名为 nodescript.js 的文件,可以运行以下命令:
1$ node inspect nodescript.js
全局对象
全局对象在 Node.js 的所有模块中都可用。它们是 JavaScript 语言的一部分,无需导入特定模块即可直接使用。以下是部分常见的全局对象:
__dirname__filenameConsoleProcesssetImmediate(callback[, arg][, ...])setInterval(callback, delay[, arg][, ...])setTimeout(callback, delay[, arg][, ...])clearImmediate()clearInterval()clearTimeout()queueMicrotask()textDecodertextEncoder