Node.js新手教程:从零开始学习服务器端JavaScript
大家好,我是小林,一名211高校计算机专业的研二学生,平时喜欢在技术博客上分享前端和全栈开发的学习经验。最近收到不少学弟学妹的私信,问我:“Node.js到底是什么?为什么前端也要学它?”其实我当初学的时候也是一头雾水——明明写了React做页面,怎么突然又要写服务器代码了?
今天这篇教程,就是为完全零基础的同学量身打造的。我会用最通俗的语言、最实用的例子,带你从“什么是Node.js”开始,一步步搭建一个能跑起来的小服务。无论你是刚学完HTML/CSS/JS的新手,还是只会写React组件的前端初学者,都能跟得上。
一、Node.js 是什么?为什么要学它?
简单说:Node.js 让 JavaScript 不再局限于浏览器,可以在服务器上运行。
- 传统前端:你写的 JS 只能在用户浏览器里执行(比如点击按钮弹窗)。
- 有了 Node.js:你可以在服务器上用 JS 处理请求、读写文件、连接数据库……
🌟 关键点:Node.js ≠ 一种新语言,它只是让 JS 能跑在后端。
和 React 的关系?
很多同学学了 React,以为前端就到头了。但实际开发中,前端需要和后端 API 交互。如果你只会写 React,却不知道后端怎么提供数据,那就像会开车但不懂加油站怎么工作。
学 Node.js,能让你:
- 理解前后端如何协作
- 自己搭建 Mock API 调试 React 应用
- 未来走向全栈开发(前端 + 后端)
二、环境准备:5 分钟搞定开发环境
我们只需要两样东西:
| 工具 | 作用 | 安装方式 |
|---|---|---|
| Node.js | 运行 JS 的后端环境 | 官网下载安装(推荐 LTS 版本) |
| VS Code | 代码编辑器 | 官网下载安装 |
安装步骤(以 Windows/macOS 为例):
- 打开 Node.js 官网
- 下载 LTS(长期支持)版本(不是 Current!)
- 双击安装,一路“下一步”
- 打开终端(Windows 用 PowerShell / macOS 用 Terminal),输入:
node -v
npm -v
如果看到类似 v18.17.0 和 9.6.7 的版本号,说明安装成功!
💡 小贴士:
npm是 Node.js 自带的包管理工具,用来安装第三方库(比如 React 就是用 npm 装的)。
三、核心概念:用大白话讲清楚
1. 什么是“服务器”?
想象你开了一家奶茶店:
- 前端(React) = 店面、菜单、点单界面
- 后端(Node.js) = 后厨、制作奶茶、管理库存
用户通过前端下单,后端接收订单并制作奶茶。
2. Node.js 如何响应请求?
Node.js 使用 HTTP 模块监听端口,接收浏览器发来的请求,并返回数据。
3. 什么是“模块化”?
Node.js 把功能拆成一个个小文件(模块),需要用时再引入。比如:
// math.js
function add(a, b) {
return a + b;
}
module.exports = { add };
// app.js
const { add } = require('./math.js');
console.log(add(2, 3)); // 输出 5
✅ 记住:
require()引入模块,module.exports导出功能。
四、实战项目:用 Node.js 写一个“Hello World”服务器
我们将创建一个最简单的 Web 服务器,访问 http://localhost:3000 时返回 "Hello from Node.js!"。
步骤 1:创建项目文件夹
mkdir my-node-app
cd my-node-app
步骤 2:初始化 npm 项目
npm init -y
这会生成一个 package.json 文件,记录项目信息和依赖。
步骤 3:创建 server.js
在项目根目录新建 server.js,写入以下代码:
// 引入 Node.js 内置的 http 模块
const http = require('http');
// 创建服务器
const server = http.createServer((req, res) => {
// 设置响应头:告诉浏览器返回的是纯文本
res.writeHead(200, { 'Content-Type': 'text/plain' });
// 发送响应内容
res.end('Hello from Node.js!');
});
// 监听 3000 端口
server.listen(3000, () => {
console.log('服务器运行在 http://localhost:3000');
});
步骤 4:运行服务器
在终端执行:
node server.js
你会看到输出:服务器运行在 http://localhost:3000
现在打开浏览器,访问 http://localhost:3000,就能看到:
Hello from Node.js!
🎉 恭喜!你已经写出了第一个 Node.js 服务!
五、进阶一点:返回 JSON 数据(给 React 用)
前端(尤其是 React)通常需要 JSON 格式的数据。我们来改造一下:
const http = require('http');
const server = http.createServer((req, res) => {
// 假设这是从数据库查到的用户数据
const users = [
{ id: 1, name: '小明' },
{ id: 2, name: '小红' }
];
// 设置响应头为 JSON
res.writeHead(200, { 'Content-Type': 'application/json' });
// 把 JS 对象转成 JSON 字符串
res.end(JSON.stringify(users));
});
server.listen(3000, () => {
console.log('API 服务器运行在 http://localhost:3000');
});
重启服务器后,访问 http://localhost:3000,你会看到:
[{"id":1,"name":"小明"},{"id":2,"name":"小红"}]
🔌 这就是 React 项目常调用的“API 接口”雏形!
六、新手常见问题 & 避坑指南
❓ 问题 1:修改代码后要手动重启服务器?
是的!原生 Node.js 不会自动重启。解决方案:
- 安装
nodemon(开发神器):
npm install -g nodemon
然后用 nodemon server.js 代替 node server.js,代码一改,服务自动重启!
❓ 问题 2:端口被占用怎么办?
错误提示:Error: listen EADDRINUSE: address already in use :::3000
解决方法:
- 换个端口(比如 3001)
- 或者杀死占用进程(macOS/Linux 用
lsof -i :3000查 PID,再kill -9 PID)
❓ 问题 3:Node.js 和浏览器 JS 有什么不同?
| 功能 | 浏览器 JS | Node.js |
|---|---|---|
| 操作 DOM | ✅ 支持 | ❌ 不支持(没有网页) |
| 读写文件 | ❌ 不行 | ✅ 用 fs 模块 |
| 发起 HTTP 请求 | ✅ fetch |
✅ 用 axios 或内置 http |
| 访问全局变量 | window |
global |
⚠️ 重要:别在 Node.js 里写
document.getElementById,会报错!
七、学习建议:下一步怎么走?
Node.js 只是后端开发的起点。结合你的前端背景,我建议按这个路径走:
学会用 Express 框架
原生 Node.js 写复杂路由很麻烦。Express 是最流行的 Node.js 框架,几行代码就能定义 RESTful API。连接数据库
学 MongoDB(搭配 Mongoose)或 MySQL,让数据真正持久化。和 React 联调
用create-react-app创建前端,用 Node.js 写后端,通过fetch或axios调用 API。部署上线
学习用 Vercel(前端)+ Render / Railway(后端)免费部署全栈应用。
推荐资源(综合整理)
| 类型 | 名称 | 说明 |
|---|---|---|
| 官方文档 | Node.js 官网 | 权威,但偏硬核 |
| 入门教程 | 《Node.js 设计模式》 | 实战强,适合进阶 |
| 视频课程 | B站“技术蛋老师”Node.js系列 | 通俗易懂 |
| 练习平台 | freeCodeCamp 后端认证 | 免费+项目驱动 |
| 社区 | GitHub、Stack Overflow | 遇到问题先搜 |
结语
我当初学 Node.js 时,也被“事件循环”“非阻塞 I/O”这些词吓到。但后来发现,先跑起来,再深入原理才是正道。你现在写的这几行代码,可能就是未来全栈项目的起点。
记住:前端不只是写页面,理解数据从哪来、到哪去,才能写出真正可用的应用。
如果你跟着教程跑通了那个小服务器,欢迎在评论区留言“Hello Node!” —— 我会一一回复!
下期预告:《用 Express + React 搭建一个待办事项应用》,敬请期待!
作者:小林|211计算机研二|专注前端与全栈教学
声明:本文所有代码均可直接复制运行,适合零基础练习。

评论 0