什么是 Node.js
Node.js 是基于 Chrome V8 引擎的 JavaScript 运行时环境,不是编程语言,能让 JS 脱离浏览器在服务端/本地运行。
一、核心组成(必说)
Node.js = V8(JS 执行) + libuv(异步 I/O + 事件循环)
| 组件 | 职责 | 关键能力 |
|---|---|---|
| V8 引擎 | 解析/编译/执行 JS 语法(let var function 等) | 把 JS 转成机器码,是 JS 语言能力的核心提供者 |
| libuv(C 语言跨平台库) | 异步 I/O + 事件循环 | 文件读写、网络请求等非阻塞操作;事件驱动、高并发的底层支撑 |
二、与浏览器 JS 的关键区别
| 维度 | 浏览器 | Node.js |
|---|---|---|
| 核心引擎 | V8 + DOM + BOM | V8 + libuv |
| 全局对象 | window document | global process Buffer |
| 能力边界 | 页面交互、DOM 操作 | 系统级 I/O、文件、网络、进程 |
| 模块系统 | ES Module | CommonJS + ES Module |
| 顶层 API | alert fetch localStorage | fs http path os crypto |
Node 没有
window/DOM,有global、fs、http、path等系统 API。
三、一句话高分回答
Node.js 是基于 V8 的 JavaScript 运行时,由 V8 负责 JS 执行、libuv 提供异步 I/O 与事件循环,让 JS 可脱离浏览器做服务端、工程化、CLI 等开发,特点是事件驱动、非阻塞 I/O、轻量高效。
四、常考延伸点
为什么前端必须会 Node?
| 领域 | 说明 |
|---|---|
| 工程化工具 | Webpack、Vite、Rollup 均基于 Node |
| 包管理 | npm、pnpm、yarn 运行在 Node 环境 |
| 脚手架 | create-react-app、vue-cli、astro 等 |
适用场景
API 服务 | SSR | CLI 工具 | 实时通信(WebSocket)| 高并发 I/O 场景
Node 为什么高并发?
单线程 + 事件驱动 + 非阻塞 I/O,避免了传统多线程的上下文切换开销,适合 I/O 密集型场景(不适合 CPU 密集型)。