跳到主要内容

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.jsKoaFastifyNestJS
性能⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
学习曲线
中间件生态丰富较少较少丰富
TypeScript可选可选可选原生
企业级支持社区社区社区企业
灵活性极高

Express.js 技术栈

适用场景

适合使用 Express.js 的场景

  1. RESTful API 开发:构建后端 API 服务
  2. 单页应用后端:Vue/React/Angular 的服务端
  3. 微服务架构:轻量级服务组件
  4. 实时应用:配合 Socket.io 使用
  5. 服务端渲染:SSR 应用
  6. 中间层/BFF:Backend For Frontend

可能不太适合的场景

  1. 大型企业应用:考虑 NestJS
  2. 需要严格规范:考虑 NestJS 或 AdonisJS
  3. 极致性能需求:考虑 Fastify

教程目录

入门基础

核心功能

  • 中间件 - 中间件机制、常用中间件、自定义中间件
  • 请求响应 - 请求对象、响应对象、数据解析

进阶特性

  • 错误处理 - 错误中间件、全局错误处理、自定义错误
  • 安全认证 - Helmet 安全、CORS、认证授权

数据库集成

测试与部署

  • 测试 - 单元测试、集成测试、Supertest
  • 部署 - PM2、Docker、生产环境配置

参考资料

快速开始

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

学习建议

  1. 先掌握 Node.js 基础:理解模块系统、事件循环
  2. 理解中间件模式:Express 的核心概念
  3. 从简单 API 开始:先构建基本的 CRUD 接口
  4. 学习 RESTful 设计:API 设计最佳实践
  5. 关注安全性:学习常见 Web 安全问题及防护

延伸阅读