Node.js新手入门:从零搭建你的第一个JavaScript服务器
大家好,我是你们的老朋友——一个在大厂摸爬滚打三年、业余时间在B站做技术UP主的前端工程师。最近收到很多私信,问我:“Node.js到底是什么?为什么前端要学它?”其实我当初学的时候也一脸懵:JavaScript不是只能跑在浏览器里的吗?怎么还能写后端?
今天这篇教程,就是为完全零基础的同学准备的。我会用最直白的语言,带你从安装到写出第一个服务,还会告诉你它和React、算法这些关键词到底有什么关系。放心,不讲虚的,全是能跑起来的代码!
为什么前端要学 Node.js?
简单说:Node.js 让 JavaScript 能运行在服务器上。
以前,JavaScript 只能在浏览器里动动 DOM、处理点击事件。但自从 2009 年 Node.js 诞生后,JS 就能读文件、连数据库、启动 HTTP 服务了!这意味着:
- 前端开发者可以用熟悉的语言写后端逻辑
- 全栈开发门槛大大降低(比如 React + Node.js 的组合)
- 工具链生态爆炸式增长(Webpack、Vite 这些打包工具都是用 Node.js 写的)
🔍 冷知识:你每天用的
npm install,背后就是 Node.js 在驱动!
第一步:环境准备 —— 安装 Node.js 和必备工具
1. 下载并安装 Node.js
前往官网 https://nodejs.org,下载 LTS(长期支持)版本(目前是 v20.x)。别下 Current 版,那是给尝鲜者的,稳定性不如 LTS。
安装时一路“下一步”即可,安装完成后打开终端(Windows 用 PowerShell 或 CMD,Mac 用 Terminal),输入:
node -v
npm -v
如果看到类似下面的输出,说明安装成功:
v20.12.0
10.5.0
⚠️ 避坑指南:如果你用的是 Mac 且遇到权限问题,不要用 sudo 安装全局包!推荐用
nvm管理 Node 版本(B站搜“nvm 安装教程”有详细视频)。
2. 安装代码编辑器
推荐 VS Code(免费 + 插件多)。装好后安装以下插件提升体验:
- ESLint(代码规范检查)
- Prettier(自动格式化)
- Node.js Extension Pack(Node 开发合集)
3. 创建你的第一个项目
在任意文件夹(比如桌面)新建一个 my-first-node-app 文件夹,进入后执行:
npm init -y
这会生成一个 package.json 文件,相当于项目的“身份证”,记录依赖、脚本等信息。
核心概念:Node.js 到底怎么工作?
什么是运行时(Runtime)?
你可以把 Node.js 想象成一个“JavaScript 执行引擎”。它基于 Chrome 的 V8 引擎(就是浏览器里跑 JS 的那个),但加了一堆服务器需要的功能,比如:
- 文件系统(fs)
- 网络请求(http)
- 操作系统信息(os)
- 路径处理(path)
同步 vs 异步:Node.js 的灵魂
Node.js 最大的特点是 非阻塞 I/O(异步)。举个例子:
// 同步(会卡住程序,直到读完)
const fs = require('fs');
const data = fs.readFileSync('file.txt', 'utf8');
console.log(data);
// 异步(不会卡住,读完再回调)
fs.readFile('file.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
Node.js 推荐用异步,这样服务器才能同时处理多个请求。现在更常用的是 Promise + async/await 写法:
const fs = require('fs').promises;
async function readMyFile() {
try {
const data = await fs.readFile('file.txt', 'utf8');
console.log(data);
} catch (err) {
console.error(err);
}
}
💡 我当初学的时候:总搞不清什么时候用
.then(),什么时候用async/await。记住:只要函数前加了async,里面就能用await,代码更像同步写法,但实际是异步的!
实战:用 Node.js 搭建一个简易 API 服务器
我们来做一个能返回用户列表的接口。目标:访问 http://localhost:3000/users,返回 JSON 数据。
步骤 1:创建 server.js
在项目根目录新建 server.js,输入以下代码:
// 引入 Node.js 自带的 http 模块
const http = require('http');
// 模拟用户数据
const users = [
{ id: 1, name: '张三' },
{ id: 2, name: '李四' },
{ id: 3, name: '王五' }
];
// 创建 HTTP 服务器
const server = http.createServer((req, res) => {
// 设置响应头:返回 JSON
res.setHeader('Content-Type', 'application/json');
// 路由判断
if (req.url === '/users' && req.method === 'GET') {
res.statusCode = 200;
res.end(JSON.stringify(users));
} else {
res.statusCode = 404;
res.end(JSON.stringify({ error: 'Not Found' }));
}
});
// 监听 3000 端口
server.listen(3000, () => {
console.log('服务器运行在 http://localhost:3000');
});
步骤 2:启动服务器
在终端运行:
node server.js
你会看到提示:“服务器运行在 http://localhost:3000”。
打开浏览器访问 http://localhost:3000/users,就能看到用户列表了!
步骤 3:升级:用 Express 框架简化代码
上面用原生 http 模块写的代码有点啰嗦。实际开发中,我们会用 Express(最流行的 Node.js Web 框架)。
先安装:
npm install express
然后新建 app.js:
const express = require('express');
const app = express();
// Express 自动解析 JSON 请求体
app.use(express.json());
const users = [
{ id: 1, name: '张三' },
{ id: 2, name: '李四' },
{ id: 3, name: '王五' }
];
// GET /users
app.get('/users', (req, res) => {
res.json(users);
});
// POST /users —— 添加新用户
app.post('/users', (req, res) => {
const newUser = {
id: users.length + 1,
name: req.body.name
};
users.push(newUser);
res.status(201).json(newUser);
});
// 启动服务器
app.listen(3000, () => {
console.log('Express 服务器运行在 http://localhost:3000');
});
现在不仅能查用户,还能通过 POST 请求添加用户(可用 Postman 或 curl 测试):
curl -X POST http://localhost:3000/users \
-H "Content-Type: application/json" \
-d '{"name":"赵六"}'
✅ 为什么用框架?
原生 Node.js 像手工造轮子,Express 则提供了路由、中间件、错误处理等现成工具,大幅提升开发效率。
Node.js 和 React、算法的关系?
很多新手会问:“我学 React 的,为什么要碰 Node.js?” 其实它们经常一起出现:
| 技术 | 角色 | 与 Node.js 的关系 |
|---|---|---|
| React | 前端 UI 框架 | 开发时用 create-react-app(基于 Node.js)启动本地服务器 |
| Node.js | 后端运行时 | 提供 API 给 React 调用 |
| 算法 | 解决计算问题的方法 | Node.js 可用来实现算法逻辑(如排序、搜索) |
举个算法小例子
假设你要在服务端对用户按名字排序:
app.get('/users/sorted', (req, res) => {
const sortedUsers = [...users].sort((a, b) =>
a.name.localeCompare(b.name)
);
res.json(sortedUsers);
});
这里就用到了 JavaScript 的 排序算法(底层是 Timsort)。虽然 Node.js 不是专门跑算法的,但业务逻辑中经常需要处理数据,算法思维很重要!
📌 技术分享 tip:我在 B站做视频时发现,很多同学以为“算法=LeetCode hard题”。其实日常开发中的数据处理、性能优化,都离不开基础算法思想。
新手常见问题 & 解决方案
| 问题现象 | 可能原因 | 解决办法 |
|---|---|---|
node: command not found |
Node 未正确安装或 PATH 未配置 | 重新安装,或重启终端 |
EADDRINUSE: port 3000 already in use |
3000 端口被占用 | 关闭其他 Node 进程,或改用其他端口(如 3001) |
Cannot find module 'xxx' |
缺少依赖包 | 运行 npm install xxx |
| 中文乱码 | 未设置正确的编码 | 在响应头加 res.setHeader('Content-Type', 'text/plain; charset=utf-8') |
| 修改代码后要重启服务器 | Node 不支持热更新 | 安装 nodemon:npm install -g nodemon,然后用 nodemon app.js 启动 |
💬 我踩过的坑:有一次死活连不上数据库,折腾半天才发现是防火墙没开端口。所以遇到问题,先看报错信息,再分层排查(网络 → 代码 → 配置)。
下一步学习建议:从入门到进阶
Node.js 只是起点,真正的全栈之路才刚开始。我给你画个学习路线图:
第一阶段:夯实基础(1-2周)
- ✅ 掌握
fs,path,http等核心模块 - ✅ 学会使用 Express/Koa 框架
- ✅ 理解 RESTful API 设计规范
第二阶段:连接真实世界(2-4周)
- 🔌 连接数据库(推荐 MongoDB + Mongoose 或 MySQL + Sequelize)
- 🔐 学习 JWT 鉴权、CORS 跨域处理
- 🧪 用 Jest 写单元测试
第三阶段:工程化 & 性能(1个月+)
- 🚀 用 PM2 部署生产环境
- ⚡ 了解集群(Cluster)和负载均衡
- 📊 接入日志监控(如 Winston + Sentry)
特别提醒:别忽视算法和数据结构!
虽然 Node.js 是工具,但解决问题的能力才是核心。建议每天花 30 分钟刷一道 LeetCode 简单题,重点掌握:
- 数组/字符串操作
- 哈希表(对象/Map)
- 递归与树遍历
- 基础排序(快排、归并)
这些在处理 API 数据、优化查询时都会用到。
结语:你已经迈出了重要一步!
恭喜你,走到这里,你已经比 80% 的观望者强了。Node.js 的魅力在于:用一套语言打通前后端,让你的创造力不再受限于“我只是前端”。
我在 B站的频道里会持续更新这类实战教程(搜“你的UP主名”就能找到)。如果你觉得这篇对你有帮助,欢迎点赞收藏,也欢迎在评论区留言你的问题——我会一一回复!
最后送你一句话:编程不是记住语法,而是学会拆解问题。Node.js 只是工具,而你,才是创造者。
现在,去运行你的第一个 node server.js 吧!🚀

评论 0