Express.js 教程
Express.js 是 Node.js 平台上最流行、最灵活的 Web 应用框架,为构建 Web 应用和 API 提供了强大的功能。它极简、高效,是 Node.js Web 开发的事实标准。
什么是 Express.js?
Express.js 是一个快速、开放、极简的 Node.js Web 应用框架,提供了一系列强大的功能来帮助你创建各种 Web 和移动应用。
- 极简主义:核心功能精简,扩展性强
- 灵活:不强制任何架构模式,自由选择
- 高性能:轻量级设计,性能优异
- 生态丰富:大量中间件和插件可用
- 社区活跃:Stack Overflow 问题最多、GitHub Star 最多的 Node.js 框架
核心特性
路由系统
Express 提供了强大的路由功能,支持 RESTful 风格的 API 设计:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.get('/users/:id', (req, res) => {
res.json({ userId: req.params.id });
});
app.post('/users', (req, res) => {
res.status(201).json({ message: 'User created' });
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
中间件机制
Express 的核心是中间件机制,请求响应流程由一系列中间件函数处理:
const express = require('express');
const app = express();
app.use(express.json());
app.use(express.static('public'));
app.use((req, res, next) => {
console.log(`${req.method} ${req.url} - ${new Date().toISOString()}`);
next();
});
app.get('/', (req, res) => {
res.send('Hello Express!');
});
模板引擎支持
Express 支持多种模板引擎,如 Pug、EJS、Handlebars 等:
app.set('view engine', 'pug');
app.set('views', './views');
app.get('/profile', (req, res) => {
res.render('profile', { name: 'Express', version: '4.x' });
});
与其他框架对比
| 特性 | Express.js | Koa | Fastify | NestJS |
|---|---|---|---|---|
| 性能 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 学习曲线 | 低 | 低 | 低 | 中 |
| 中间件生态 | 丰富 | 较少 | 较少 | 丰富 |
| TypeScript | 可选 | 可选 | 可选 | 原生 |
| 企业级支持 | 社区 | 社区 | 社区 | 企业 |
| 灵活性 | 极高 | 高 | 高 | 中 |
Express.js 技术栈
适用场景
适合使用 Express.js 的场景
- RESTful API 开发:构建后端 API 服务
- 单页应用后端:Vue/React/Angular 的服务端
- 微服务架构:轻量级服务组件
- 实时应用:配合 Socket.io 使用
- 服务端渲染:SSR 应用
- 中间层/BFF:Backend For Frontend
可能不太适合的场景
- 大型企业应用:考虑 NestJS
- 需要严格规范:考虑 NestJS 或 AdonisJS
- 极致性能需求:考虑 Fastify
教程目录
入门基础
核心功能
进阶特性
数据库集成
- 数据库集成 - MongoDB、MySQL、ORM 使用
测试与部署
参考资料
- 速查表 - Express.js 常用语法速查
快速开始
const express = require('express');
const app = express();
app.use(express.json());
app.get('/', (req, res) => {
res.json({ message: 'Hello Express!' });
});
app.get('/users/:id', (req, res) => {
const { id } = req.params;
res.json({ userId: id, name: 'User' + id });
});
app.post('/users', (req, res) => {
const { name, email } = req.body;
res.status(201).json({
message: 'User created',
user: { name, email }
});
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
运行:
npm init -y
npm install express
node app.js
学习建议
- 先掌握 Node.js 基础:理解模块系统、事件循环
- 理解中间件模式:Express 的核心概念
- 从简单 API 开始:先构建基本的 CRUD 接口
- 学习 RESTful 设计:API 设计最佳实践
- 关注安全性:学习常见 Web 安全问题及防护