一、Node.js是什么
很多学前端的朋友可能都有过这个疑问:JavaScript不是只能在浏览器里跑吗?怎么还能做后端?
其实Node.js就是让JavaScript脱离浏览器的运行时环境,它用Chrome V8引擎来执行JS代码,特点是事件驱动、非阻塞I/O,性能相当能打。简单说,你学会了Node.js,前端后端就都能写了,朝着全栈工程师的方向迈出一大步。

为什么要学Node.js做后端
说实话,Node.js的优势挺实在的:
语言统一:前端后端都用JavaScript,学习成本低,上手快。
生态丰富:NPM上有海量的开源包,几乎你想实现的功能都有人做过。
前后端协作方便:接口设计、数据格式都好沟通。
适用场景广:做API服务、微服务、实时应用(聊天、游戏后端)都很合适。
二、Node.js自学环境准备
安装Node.js
学习Node.js的第一步就是把环境搭好,其实很简单:
Windows用户:去Node.js官网(nodejs.org)下载安装包,推荐LTS(长期支持版),一路下一步就完事了。
macOS用户:用Homebrew安装最方便,brew install node 搞定。
Linux用户:可以用apt或yum,或者直接下载二进制包。
装完之后打开命令行,输入 node -v 和 npm -v,能看到版本号就说明安装成功了。
开发工具选择
写Node.js代码其实用任何文本编辑器都行,但推荐这几个:
VS Code:微软出的免费编辑器,对Node.js支持很好,有智能提示、调试功能。
WebStorm:JetBrains出品,功能更强大,不过要付费。
新手建议先用VS Code,免费够用,等熟悉了再换也行。
三、Node.js核心基础
第一个程序
惯例先来写个Hello World,感受一下Node.js的运行方式:
javascript
// 创建文件 app.js
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello Node.js!\n');
});
server.listen(3000, '127.0.0.1', () => {
console.log('服务器运行在 http://127.0.0.1:3000');
});
运行的话,在命令行输入 node app.js,然后打开浏览器访问localhost:3000就能看到了。
核心模块介绍
Node.js内置了很多实用的模块,不需要额外安装就能用:
fs模块:文件系统操作,读写文件就靠它。
javascript
const fs = require('fs');
// 读取文件
fs.readFile('test.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
path模块:处理文件路径,跨平台开发必备。
javascript
const path = require('path');
const fullPath = path.join(__dirname, 'public', 'index.html');
http模块:创建Web服务器,上面Hello World例子用到了。
events模块:事件处理,Node.js很多功能都基于事件驱动。
四、NPM包管理
NPM(Node Package Manager)是Node.js的包管理工具,相当于前端npm的生态库中心,装Node.js的时候就自带了。
初始化项目
新建一个文件夹,然后进入命令行初始化:
bash
npm init -y
这样会在当前目录生成 package.json 文件,记录项目依赖信息。
安装第三方包
想用什么包,直接 npm install 就行:
bash
# 安装Express框架
npm install express
# 安装nodemon(代码改了自动重启)
npm install --save-dev nodemon
# 安装axios(发HTTP请求)
npm install axios
安装的包会出现在 node_modules 目录里,package.json 里的 dependencies 也会自动更新。
使用国内镜像
如果npm安装慢,可以换成淘宝镜像:
bash
npm config set registry https://registry.npmmirror.com
五、Express框架快速入门
虽然用原生的http模块能写服务器,但实际开发中大家都用Express,代码简洁,功能强大。
创建Express项目
bash
# 新建文件夹
mkdir my-express-app
cd my-express-app
# 初始化并安装Express
npm init -y
npm install express
# 创建入口文件
touch app.js
基础代码
javascript
const express = require('express');
const app = express();
const port = 3000;
// 中间件 - 解析JSON请求体
app.use(express.json());
// GET请求
app.get('/', (req, res) => {
res.send('这是首页');
});
// GET带参数
app.get('/user/:id', (req, res) => {
const userId = req.params.id;
res.json({ id: userId, name: '小明' });
});
// POST请求
app.post('/user', (req, res) => {
const { name, email } = req.body;
res.json({ message: '用户创建成功', data: { name, email } });
});
// 启动服务器
app.listen(port, () => {
console.log(`服务器运行在 http://localhost:${port}`);
});
运行 node app.js 就能看到效果了。
六、连接数据库
后端开发肯定要跟数据库打交道,这里介绍两种常见方案。
MongoDB数据库
MongoDB跟Node.js是黄金搭档,JSON风格的文档数据库,用起来很顺手。
安装mongoose包来操作MongoDB:
bash
npm install mongoose
连接和使用示例:
javascript
const mongoose = require('mongoose');
// 连接数据库
mongoose.connect('mongodb://localhost:27017/mydb', {
useNewUrlParser: true,
useUnifiedTopology: true
}).then(() => {
console.log('数据库连接成功');
});
// 定义数据模型
const userSchema = new mongoose.Schema({
name: String,
email: String,
age: Number
});
const User = mongoose.model('User', userSchema);
// 插入数据
const newUser = new User({ name: '张三', email: 'zhangsan@example.com', age: 25 });
newUser.save().then(() => console.log('用户创建成功'));
MySQL数据库
如果项目需要关系型数据库,可以用mysql2包:
bash
npm install mysql2
javascript
const mysql = require('mysql2/promise');
// 创建连接池
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'your_password',
database: 'mydb',
waitForConnections: true,
connectionLimit: 10
});
// 查询数据
async function getUsers() {
const [rows] = await pool.query('SELECT * FROM users');
return rows;
}
七、RESTful API设计
做后端API服务,RESTful是现在最流行的设计风格。
什么是RESTful
简单说就是用HTTP动词表达操作意图,URL只表示资源:
| HTTP方法 | 操作 | 示例 |
|---|---|---|
| GET | 获取资源 | GET /users |
| POST | 创建资源 | POST /users |
| PUT | 更新资源 | PUT /users/1 |
| DELETE | 删除资源 | DELETE /users/1 |
完整API示例
javascript
const express = require('express');
const app = express();
app.use(express.json());
// 模拟数据
let users = [
{ id: 1, name: '张三', email: 'zhangsan@example.com' },
{ id: 2, name: '李四', email: 'lisi@example.com' }
];
// 获取所有用户
app.get('/api/users', (req, res) => {
res.json({ code: 0, data: users });
});
// 获取单个用户
app.get('/api/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ code: 1, message: '用户不存在' });
res.json({ code: 0, data: user });
});
// 创建用户
app.post('/api/users', (req, res) => {
const newUser = {
id: users.length + 1,
name: req.body.name,
email: req.body.email
};
users.push(newUser);
res.json({ code: 0, data: newUser });
});
// 更新用户
app.put('/api/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ code: 1, message: '用户不存在' });
user.name = req.body.name || user.name;
user.email = req.body.email || user.email;
res.json({ code: 0, data: user });
});
// 删除用户
app.delete('/api/users/:id', (req, res) => {
users = users.filter(u => u.id !== parseInt(req.params.id));
res.json({ code: 0, message: '删除成功' });
});
app.listen(3000);
八、实战项目推荐
光学理论不够,必须动手做项目才能真正掌握。
项目一:Todo待办清单应用
做个小型的待办应用,包含增删改查功能,练手很合适。可以用本地文件存储或MongoDB数据库,前端用HTML+JavaScript或者Vue/React都行。
项目二:博客系统后端
做一个完整的博客后端服务,包括:
- 用户注册登录(JWT认证)
- 文章CRUD
- 评论功能
- 分类标签管理
这个项目能覆盖后端开发的方方面面。
项目三:实时聊天应用
用Node.js + Socket.io做一个聊天室,可以实现:
- 多用户实时通信
- 用户进入/离开提示
- 私聊功能
Socket.io是Node.js处理实时通信的神器。
九、学习资源推荐
官方文档
Node.js官网(nodejs.org/zh-cn)和Express官方文档是最好的学习资料,内容权威还免费,有中文版。
在线课程
慕课网:有Node.js实战课程,讲得比较系统。
Bilibili:搜Node.js有一大堆免费教程,适合入门。
尚硅谷:Node.js全套教程,质量不错。
社区和工具
Node.js中文网:www.nodejs.cn,提供中文文档和技术文章。
Stack Overflow:遇到问题去这里搜,十有八九有答案。
GitHub:多看优秀的Node.js开源项目,学习人家的代码风格。
十、学习路线总结
给想学Node.js后端的朋友梳理一下学习顺序:
第一阶段:HTML/CSS/JS基础(如果还没学过前端先把这个补上)
第二阶段:Node.js基础语法、内置模块
第三阶段:NPM包管理、Express框架
第四阶段:数据库操作(MongoDB或MySQL)
第五阶段:RESTful API设计、用户认证
第六阶段:项目实战,做完整的应用
第七阶段:性能优化、安全防护、部署上线
按照这个路线走,半年左右应该能入门,找到一份初级后端开发的工作问题不大。关键是多动手,代码敲起来!
Node.js入门其实不算难,关键是找对方法、坚持练习。希望这篇教程能帮到你,祝学习顺利!

发表回复