Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,使 JS 能在服务器端运行;它非语言也非框架,而是提供 fs、http 等 API 的执行平台,核心为单线程+事件驱动+非阻塞 I/O,支持统一语言栈与庞大 npm 生态。

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它让 JavaScript 能在服务器端运行,而不仅限于浏览器。 它不是一门语言,也不是框架,而是一个能让 JS 脱离浏览器、直接操作文件、网络、进程等系统资源的执行平台。
为什么 JS 能在服务端跑了?
传统上 JS 只在浏览器里跑,靠浏览器提供的 API(比如 document、alert)工作。Node.js 把 JS 引擎(V8)单独拎出来,再配上自己实现的一套服务器级 API(如 fs 读写文件、http 创建服务器、path 处理路径),就构成了一个完整的后端运行环境。
它的核心特点是:
- 单线程 + 事件驱动 + 非阻塞 I/O:适合高并发、I/O 密集型任务(比如处理大量用户请求、文件读写、数据库查询)
- 统一语言栈:前后端都用 JS,减少上下文切换成本
- 庞大的生态:npm 是全球最大的包管理器,几乎什么功能都有现成模块
写一个最简单的 HTTP 服务器
安装 Node.js 后(去 nodejs.org 下载安装),新建一个文件 server.js:
立即学习“Java免费学习笔记(深入)”;
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello from Node.js!');
});
server.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
终端里执行:node server.js
打开浏览器访问 http://localhost:3000,就能看到响应。
说明:
-
require('http')是加载 Node 内置的 HTTP 模块 -
createServer接收一个回调函数,每次有请求进来就会触发 -
res.end()发送响应并结束这次请求 -
listen()让服务器监听指定端口
更实用:用 Express 快速搭 Web 服务
原生 http 模块太底层,一般项目会用框架。Express 是最流行的轻量级 Web 框架:
先初始化项目:
mkdir myapp && cd myapp
npm init -y
npm install express
然后写 app.js:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Welcome to Express!');
});
app.get('/api/users', (req, res) => {
res.json([{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }]);
});
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});
运行:node app.js
现在访问 / 和 /api/users 就能拿到不同响应,支持路由、JSON 输出、中间件等常见功能。
关键点提醒
写服务端 JS 和写前端 JS 有几个重要区别:
- 没有
window、document、localStorage—— 这些是浏览器专属 - 有
global(类似浏览器的window)、__dirname、process、require等 Node 特有全局变量和 API - 模块系统用的是 CommonJS(
require/module.exports),不是浏览器的 ES Module(虽然新版 Node 也支持import) - 文件操作、数据库连接、环境变量读取等都靠 Node 提供的模块完成
基本上就这些。不复杂但容易忽略——关键是理解 Node.js 是“让 JS 跑在服务器上的环境”,而不是 JS 本身变了。











