# Node.js 2026 学习 Demo

Node.js 是 JavaScript 运行时，不是浏览器 API；它通常承担 BFF、轻量服务、脚本和构建工具等职责。先掌握 HTTP、异步 I/O 与运行时边界，再按项目需要学习 Express、Fastify 或 NestJS。

## 运行

要求 Node.js 20 或更高版本，不需要安装任何依赖。

```bash
cd node
node server.mjs
```

打开终端输出的 `http://127.0.0.1:3100`。可按需在启动前设置配置：

```bash
PORT=3200 APP_NAME="My API" NODE_ENV=production node server.mjs
```

## 本示例覆盖的知识点

- 运行时：`process.version` 与 Node 内置模块。
- 模块：ESM 的 `import` / `export`，以及 `node:` 内置模块前缀。遗留项目仍会见到 CommonJS 的 `require` /
  `module.exports`。
- 异步 I/O：`node:fs/promises` 与 `await`；不要在请求处理路径中使用同步文件 API。
- HTTP/API：`node:http`、请求方法、URL 查询参数、JSON 请求体、状态码和响应头。
- 配置：集中读取 `process.env`，启动时校验；密钥不能放到浏览器代码或 API 响应里。
- 错误：业务校验返回 4xx，未预期异常记录完整日志后返回通用 5xx 信息；每个响应携带 `X-Request-Id` 便于关联排查。
- 取消：浏览器通过 `AbortController` 取消仍在等待的请求。

Java 对照：`node:http` 类似用 Servlet API 直接搭建 HTTP 服务；`async`
I/O 像非阻塞 I/O 的使用目标，但 Node 的并发模型基于事件循环。生产 API 不应只依赖此示例，应增加认证授权、结构化日志、持久化、测试、限流和可观测性。
