太棒了!👏 你已经用原生 Node.js 实现了服务器、路由、静态资源和 API,现在是时候引入“利器”了——
📌 核心知识点:
Express 是一个轻量、灵活的 Node.js Web 框架,它简化了路由、中间件、请求处理等操作,让你用更少的代码做更多的事。
🤔 问题来了:我们真的要一直手动写 if (pathname === ...) 吗?
回顾我们之前的代码:
if (pathname === '/api/weather') {
// 处理天气
} else if (pathname === '/login') {
// 处理登录
} else if (pathname.startsWith('/public/')) {
// 处理静态文件
// ...一大堆判断
}
❌ 问题:
- 路由越来越多时,代码变得臃肿
- 正则匹配复杂路径很麻烦
- 请求数据解析重复写
- 缺乏标准化结构
👉 就像骑自行车上班 vs 开车上班 —— 工具决定效率!
🚗 什么是 Express?
| 对比项 | 原生 Node.js | Express |
|---|---|---|
| 写路由 | 手动判断 req.url | 使用 app.get('/xxx', fn) |
| 解析 POST 数据 | 监听 data 事件 + 手动拼接 | 使用中间件自动解析 |
| 静态文件服务 | 自己读文件 + 设置 MIME | 一行代码搞定 |
| 错误处理 | 自己控制 | 提供统一错误处理机制 |
| 扩展性 | 差 | 极强(海量中间件) |
✅ Express 的目标:让开发者专注于业务逻辑,而不是底层细节。
💡 安装与初始化
第一步:创建项目并安装 Express
# 创建项目文件夹
mkdir my-express-app
cd my-express-app
# 初始化 package.json
npm init -y
# 安装 express
npm install express
✅ 确保你已安装 Node.js 和 npm(运行 npm -v 检查)
🌟 第一个 Express 应用
创建 app.js:
// 引入 express
const express = require('express');
// 创建应用实例
const app = express();
// 定义一个路由
app.get('/', (req, res) => {
res.send('Hello from Express! 🚀');
});
// 启动服务器
const PORT = 3000;
app.listen(PORT, () => {
console.log(`✅ Express 服务器运行在 http://localhost:${PORT}`);
});
运行它:
node app.js
打开浏览器访问:http://localhost:3000
输出:
Hello from Express! 🚀
🎉 成功!比原生简单太多了!
✨ Express 的核心优势一览
1️⃣ 更简洁的路由系统
app.get('/users', (req, res) => { ... })
app.post('/login', (req, res) => { ... })
app.put('/users/1', (req, res) => { ... })
app.delete('/users/1', (req, res) => { ... })
👉 支持所有 HTTP 方法,路径清晰。
2️⃣ 内置中间件支持(稍后会讲)
比如自动解析 JSON 请求体:
app.use(express.json()); // 自动把 req.body 解析成对象
3️⃣ 静态文件服务只需一行
app.use(express.static('public'));
这句代码的意思是:
👉 所有对 /style.css、/index.html 等请求,自动从 public/ 文件夹找对应文件返回。
再也不用手动读文件、判断 MIME 类型了!
4️⃣ 路径参数轻松获取
app.get('/users/:id', (req, res) => {
const userId = req.params.id; // 比如 /users/123 → id=123
res.send(`用户ID: ${userId}`);
});
5️⃣ 查询参数直接可用
app.get('/search', (req, res) => {
const q = req.query.q; // /search?q=node → q="node"
res.json({ keyword: q });
});
✅ 小结一句话:
Express 是 Node.js 最流行的 Web 框架,它通过简洁的 API 和丰富的中间件生态,极大提升了开发效率,是构建现代 Web 应用的首选工具。
📬 下一课预告:
第 17 课:Express 核心三剑客 —— 路由、中间件、请求响应对象详解!
我们将深入学习:
app.get/post/put/deleteapp.use()中间件机制req和res的常用属性与方法