Express.js
Express.js 是一个快速、灵活、极简的 Node.js Web 应用程序框架,为 Web 和移动应用程序提供了一组强大的功能。它是最流行的 Node.js Web 框架,也是许多其他流行框架的基础。
1. 基础使用
1.1 安装和设置
# 创建新项目
mkdir myapp
cd myapp
npm init -y
# 安装 Express
npm install express
# 安装常用中间件
npm install body-parser cookie-parser morgan cors helmet
1.2 基本应用
// app.js
const express = require('express');
const app = express();
const port = 3000;
// 中间件
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// 路由
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.post('/api/users', (req, res) => {
const user = req.body;
res.json(user);
});
// 启动服务器
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
2. 路由系统
2.1 基础路由
// routes/users.js
const express = require('express');
const router = express.Router();
// GET /users
router.get('/', (req, res) => {
res.json([{ id: 1, name: 'John' }]);
});
// GET /users/:id
router.get('/:id', (req, res) => {
const id = req.params.id;
res.json({ id, name: 'John' });
});
// POST /users
router.post('/', (req, res) => {
const user = req.body;
res.status(201).json(user);
});
module.exports = router;
// app.js
const usersRouter = require('./routes/users');
app.use('/users', usersRouter);
2.2 高级路由
// 路由参数
app.get('/users/:userId/books/:bookId', (req, res) => {
res.json(req.params);
});
// 正则表达式路由
app.get(/.*fly$/, (req, res) => {
res.send('URL ends with "fly"');
});
// 多个处理函数
app.get('/example',
(req, res, next) => {
console.log('First handler');
next();
},
(req, res) => {
res.send('Second handler');
}
);