首页 / Node.js 教程 / Node.js 是什么

Node.js 教程

Node.js 是什么

本教程共 76 篇 · 第 1 篇 · 更新于 2026-07-25 · 约 6 分钟阅读

Node.js运行时V8JavaScript服务端

1. Node.js 是什么

本节目标:搞清楚 Node.js 到底是个啥,它和浏览器里的 JavaScript 有什么区别,以及它能帮你做什么、不能做什么。

一句话定义

Node.js 是个让 JavaScript 在浏览器外面跑起来的运行时(Runtime)。

以前 JavaScript 只能待在浏览器里操作网页。2009 年 Ryan Dahl 把 Chrome 的 V8 引擎搬出来,加了文件系统、网络请求这些能力,JavaScript 就能写服务器、写命令行工具、写爬虫了。

所以 Node.js 不是一门新语言,也不是一个框架。它就是 JavaScript 的「后台运行环境」。

Tip

很多人把 Node.js 叫成「后端语言」,其实不太准确。JavaScript 才是语言,Node.js 只是让这门语言能在服务器上执行的容器。


为什么需要它

假设你只会 JavaScript,以前想做个网站后端,得去学 Python、Java 或者 PHP。前后端是两套语法、两套生态,脑子得来回切换。

有了 Node.js,你可以:

  • 前端页面用 JavaScript 写
  • 后端 API 也用 JavaScript 写
  • 两边的工具函数(比如数据校验、日期格式化)直接复用

这带来的好处很实在。团队里大家只用一门语言,代码能共享,招人也不用限定「只招后端」。


Node.js 能做什么

别被「服务器端 JavaScript」这个标签局限了,Node.js 的战场很广。

Web 服务与 API

搭个 HTTP 服务器几行代码就能跑:

import { createServer } from 'node:http';

createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World');
}).listen(3000, () => {
  console.log('服务器在 http://localhost:3000');
});

用 Express、Fastify、Koa 这些框架,几十行就能搭一个带路由的 REST API。

实时应用

聊天室、在线协作、游戏大厅——这些需要服务端主动推消息的场景,Node.js 的事件模型非常契合。配合 WebSocket,一个进程就能扛住大量长连接。

命令行工具

你平时用的 npmwebpackviteeslint,全是 Node.js 写的。写个内部脚手架、自动化脚本、文件批处理,Node.js 是首选。

微服务与网关

轻量、启动快、内存占用低,Node.js 很适合做 API 网关或者单个微服务节点。当然,巨型的核心交易链路可能不是它的主场,后面会说。


和浏览器里的 JavaScript 有什么不同

语法完全一样,但「家」不一样,能调用的 API 也就不同。

能力浏览器Node.js
操作 DOMdocument.querySelector没有 DOM,因为没页面
文件系统沙箱限制,不能直接读写fs 模块随便读写
网络请求fetch、XMLHttpRequesthttphttps,还有内置 fetch(自 v18 起)
全局对象windowglobal(v24 起推荐用 globalThis
模块系统ESM(importESM + CommonJS(require)都能用
环境控制用户用什么浏览器你管不了你说了算,想升版本就升

在浏览器里,你没法打开服务器上的 config.json 直接读。在 Node.js 里,fs.readFileSync('config.json') 一行搞定。反过来,Node.js 里也没有 documentwindow,因为服务器上没有网页给你操作。

还有一个关键区别:Node.js 支持 require()(CommonJS)和 import(ESM)两套模块系统,而浏览器主要走 ESM。这个我们在后续章节细讲。

Note

自 v18 起,Node.js 内置了全局 fetch,和浏览器里的用法几乎一致。不用再装 node-fetch 之类的第三方包了。但注意,Node.js 的 fetch 底层基于 undici,某些边缘行为和浏览器版仍有差异。


单线程、事件驱动、非阻塞 I/O

这三个词你会在每一本 Node.js 书里看到。我尽量用人话解释。

想象你去一家快餐店点餐:

  • 传统多线程模型(比如 Java Tomcat):每个顾客配一个服务员,从头到尾服务完一个再服务下一个。顾客多了就得多招服务员,成本高。
  • Node.js 模型:只有一个收银员。你点完餐他给你一个叫号器,去忙下一个人。餐好了叫号器响,你过来取。一个收银员能同时应对几十个人。

这个「叫号器」就是回调函数,收银员不断循环查看谁餐好了,就是事件循环(Event Loop)。因为不用频繁「招服务员」(创建线程),所以内存省、切换开销小。

但这也意味着,如果收银员自己算一道复杂的数学题(CPU 密集型任务),后面所有人都得等着。Node.js 的天敌就是纯计算任务,比如视频转码、大矩阵运算。这类活要么丢给别的服务,要么用 worker_threads 开多线程(第 35 章讲)。


发布节奏:v27 起变天了

Node.js 的版本策略经历过一次调整,你找工作或者看项目文档时经常会碰到这些词:

  • Current:最新特性版,每半年出一个大版本。适合尝鲜,不建议直接上生产。
  • Active LTS:长期支持版,持续接收新功能和 bug 修复。生产环境首选。
  • Maintenance LTS:维护期,只修安全漏洞,不加新功能。

截至 2026 年中:

通道版本代号状态
Currentv26.5.0新特性试验场
Active LTSv24.18.0Krypton生产推荐
Maintenance LTSv22.23.1Jod仅安全更新
Warning

v20(Iron)已经在 2026 年 3 月 EOL(停止维护),新项目别再用。

重点来了:从 Node.js 27 开始,发布节奏改为年度制。每年一个大版本,6 个月 Current 期后全部进入 LTS。这意味着版本号会涨得慢一些,但每个版本的 LTS 支持期可能缩短。选版本时认准官网的 LTS 标签就行,不用记太多。


安装之前需要多少 JavaScript 基础

你不用是 JavaScript 高手,但下面这些概念得熟悉:

  • 变量、函数、箭头函数、this
  • 数组和对象操作
  • 模板字符串、解构赋值
  • Promiseasync/await(异步是 Node.js 的灵魂)
  • 作用域和闭包

如果你只会写 alert('hello') 级别的代码,建议先补一补 JS 基础。Node.js 里没有 DOM,但逻辑和语法跟浏览器完全一致,会前端的人几乎零门槛切入。


一句话判断 Node.js 适不适合你的场景

  • 大量 I/O(读写文件、操作数据库、网络请求)?非常适合
  • 需要高并发、长连接(聊天、推送)?非常适合
  • CPU 密集型计算(图像处理、机器学习训练)?不太适合,除非你拆给 worker 或外部服务。
  • 一次性脚本、CLI 工具、构建工具?天选之子

下一章我们直接上手,把 Node.js 装到你的电脑里。

上一篇
已经是第一篇啦
下一篇
安装 Node.js