在本章中,我们将详细探讨 Express 的基础概念和功能,包括路由、中间件、模板引擎和静态文件服务。这些内容是使用 Express 开发 Web 应用程序的基础。
1 路由基础
路由是指如何定义应用的各个 URL 路径及其处理方式。在 Express 中,可以使用 app.get
、app.post
、app.put
、app.delete
等方法定义不同的路由。每个路由方法对应一个 HTTP 请求方法(GET、POST、PUT、DELETE 等)。
基本路由示例:
// 引入 Express 模块
const express = require('express');
// 创建一个 Express 应用
const app = express();
// 定义一个处理 GET 请求的路由
app.get('/', (req, res) => {
res.send('Hello, GET request!');
});
// 定义一个处理 POST 请求的路由
app.post('/submit', (req, res) => {
res.send('Form submitted via POST request!');
});
// 定义一个处理 PUT 请求的路由
app.put('/update', (req, res) => {
res.send('Resource updated via PUT request!');
});
// 定义一个处理 DELETE 请求的路由
app.delete('/delete', (req, res) => {
res.send('Resource deleted via DELETE request!');
});
// 启动服务器,监听指定端口
const port = 3000;
app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});
代码详解:
app.get('/', (req, res) => {...});
:处理 GET 请求。当用户访问根路径/
时,发送 “Hello, GET request!” 响应。app.post('/submit', (req, res) => {...});
:处理 POST 请求。当用户提交表单到/submit
路径时,发送 “Form submitted via POST request!” 响应。app.put('/update', (req, res) => {...});
:处理 PUT 请求。当用户发送 PUT 请求到/update
路径时,发送 “Resource updated via PUT request!” 响应。app.delete('/delete', (req, res) => {...});
:处理 DELETE 请求。当用户发送 DELETE 请求到/delete
路径时,发送 “Resource deleted via DELETE request!” 响应。
2 路由参数
Express 路由可以包含动态参数,这些参数可以在请求处理过程中获取和使用。路由参数通过冒号 :
定义,并在请求处理函数中通过 req.params
访问。
示例:
// 定义一个包含动态参数的路由
app.get('/user/:id', (req, res) => {
// 获取路由参数 id
const userId = req.params.id;
res.send(`User ID: ${userId}`);
});
当用户访问 /user/123
时,响应内容将为 “User ID: 123”。
3 路由器
在大型应用程序中,将相关的路由组织在一起是很有用的。这可以通过使用 Express 的路由器(express.Router
)来实现。
示例:
// 引入 Express 和路由器模块
const express = require('express');
const router = express.Router();
// 定义用户相关的路由
router.get('/profile', (req, res) => {
res.send('User profile page');
});
router.get('/settings', (req, res) => {
res.send('User settings page');
});
// 将路由器挂载到应用中
const app = express();
app.use('/user', router);
// 启动服务器
const port = 3000;
app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});
当用户访问 /user/profile
或 /user/settings
时,将分别看到 “User profile page” 和 “User settings page”。