Express.js 是 Node.js 生态中最流行、最轻量的 Web 框架,自 2010 年发布以来一直是构建 REST API 和 Web 应用的首选。本文从路由到中间件,从开发到生产,覆盖 Express 的完整实战路径。
一、项目初始化
mkdir my-api && cd my-api
npm init -y
npm install express
npm install -D nodemon @types/express typescript ts-node
npx tsc --init
// src/index.ts
import express, { Request, Response } from 'express';
const app = express();
app.use(express.json());
app.get('/', (req: Request, res: Response) => {
res.json({ message: 'Hello Express' });
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
二、路由系统
import { Router } from 'express';
const userRouter = Router();
// 参数路由
userRouter.get('/:id', (req, res) => {
res.json({ id: req.params.id });
});
// 查询参数
userRouter.get('/', (req, res) => {
const { page = '1', limit = '10' } = req.query;
res.json({ page, limit });
});
// POST 请求体
userRouter.post('/', (req, res) => {
const { name, email } = req.body;
res.status(201).json({ id: 1, name, email });
});
app.use('/users', userRouter);
三、中间件
// 日志中间件
app.use((req, res, next) => {
console.log(`${req.method} ${req.url}`);
next();
});
// 错误处理中间件(必须放在最后)
app.use((err: Error, req: Request, res: Response, next: NextFunction) => {
console.error(err.stack);
res.status(500).json({ error: 'Something broke!' });
});
四、项目结构
src/
├── index.ts # 入口
├── routes/
│ ├── users.ts
│ └── posts.ts
├── controllers/
│ ├── userController.ts
│ └── postController.ts
├── middleware/
│ ├── auth.ts
│ ├── errorHandler.ts
│ └── validate.ts
├── models/
│ └── user.ts
└── utils/
└── db.ts
常见问题
Express 5 什么时候发布?
Express 5 目前处于 RC 阶段,主要改进是原生支持 async 错误处理(不再需要 express-async-errors 包)。
Express vs Fastify vs Nest.js 怎么选?
| 框架 | 特点 | 适用 |
|---|---|---|
| Express | 极简、生态最大 | 中小型 API、快速原型 |
| Fastify | 性能最好、Schema 验证内置 | 性能敏感、大型 API |
| Nest.js | 企业级、模块化、TypeScript 原生 | 大型项目、团队协作 |
相关阅读
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。
「frontend」更多文章
Vue 性能优化指南:虚拟列表、懒加载、渲染优化与 Core Web Vitals
Vue 3 应用性能优化完整策略:虚拟滚动(vue-virtual-scroller)、组件懒加载与异步组件、KeepAlive 缓存、Suspense 异步优化、v-memo 渲染记忆化、响应式性能(shallowRef/toRaw)、Bundle 分析与代码分割、渲染函数优化、以及 Core Web Vitals(LCP/INP/CLS)调优。
Nuxt.js 完全指南:Vue 全栈框架的 SSR、SSG、API 路由与部署实践
Nuxt.js 3 深度实践:文件系统路由、SSR/SSG/ISR 渲染模式、API 路由(Server Routes)、useFetch/useAsyncData 数据获取、中间件与插件、SEO 与 Meta 管理、Nitro 服务端引擎、自动导入、部署到 Vercel/Netlify/Node.js。
Vue 测试深度指南:Vitest + Vue Test Utils + Playwright E2E 与 CI 集成
Vue 3 应用从单元测试到 E2E 的完整测试策略:Vitest + Vue Test Utils 组件测试(mount/emits/slots/async)、Pinia Store Mocking、MSW API 拦截、Playwright 端到端测试、Cypress 组件测试、覆盖率标准与 GitHub Actions CI 集成。