Node.js
基于 V8 和 libuv 的 JavaScript 运行时,适合 I/O 密集型后端服务、BFF、网关、实时通信与任务编排。
#type / resource
#status / growing
#tech / dev / backend
#resource / nodejs
#resource / javascript
#platform / server
[!info] related notes
- 相关 MOC: Node.js MOC, 后端开发 MOC, Node.js 后端面试 MOC
- 相关主题: Node.js 的起源与设计目标, Node.js 下的 JavaScript, Node.js 运行时架构, V8, libuv
- 相关能力: Node.js 事件循环阶段, Stream, worker-threads
Node.js
这是什么
Node.js 是一个基于 V8 引擎的 JavaScript 运行时。
它让 JavaScript 不再只运行在浏览器里,而是能够直接访问服务端常见能力,例如:
- 文件系统
- 网络套接字
- HTTP 服务
- 进程与环境变量
- 流式 I/O
如果只用一句更工程化的话概括:
Node.js 是把 JavaScript 放进服务端宿主环境后的运行时与标准库组合。
它为什么会出现
Node.js 出现的直接背景不是“JavaScript 想抢后端语言地盘”,而是 Web 服务越来越需要:
- 更高并发的 I/O 处理
- 更轻量的长连接管理
- 更少线程资源去承接更多网络等待
它选择用事件驱动和非阻塞 I/O 回答这个问题。更完整的背景见:Node.js 的起源与设计目标。
适用平台
- 服务器端 API 服务
- BFF 和网关层
- 实时通信服务
- CLI 工具
- 构建脚本与自动化脚本
核心特点 / 优势 / 局限
核心特点
- JavaScript 语言执行由 V8 负责
- 异步 I/O 调度主要由 libuv 负责
- 宿主环境提供
fs、http、net、stream、crypto等 API - 业务代码通常在单个事件循环主线程里执行
优势
- 非阻塞 I/O 让它很适合高并发接口服务
- 前后端同语言,协作与共享类型更顺滑
- 生态成熟,Web、脚本、构建、自动化都很常见
- 流式处理、事件驱动、任务编排场景落地成本低
局限
- CPU 密集型任务会阻塞主线程
- 大量同步计算、同步文件操作或超大 JSON 解析会直接拖慢整个进程
- 真正需要并行计算时,通常要配合 worker-threads、多进程、队列或拆服务
常见用途
- Web API / REST 服务
- GraphQL / BFF 聚合层
- SSE / WebSocket 实时推送
- 上传、下载、转发、代理等 I/O 型服务
- 面向项目工程的脚本、构建链和命令行工具
相关链接 / 官方入口
- 主题地图:Node.js MOC
- 运行时原理:Node.js 运行时架构
- 执行引擎:V8
- 调度核心:libuv
- 起源与目标:Node.js 的起源与设计目标
- 面试阅读路径:Node.js 后端面试 MOC
- 官方:https://nodejs.org/