📅  最后修改于: 2023-12-03 15:23:40.304000             🧑  作者: Mango
Express.js 是一个基于 Node.js 平台的 web 应用开发框架,它提供了丰富的功能来帮助我们快速开发 web 应用。Express 提供了一个简单灵活的方式来搭建 web 应用,并且既可以用于简单的静态网站,也可以用于大型应用程序。
在 web 应用中,路由指的是客户端请求的 URL 和服务器端响应的代码之间的匹配关系。Express.js 提供了一个灵活的路由系统,可以根据不同的 URL 请求来执行不同的代码。这样,我们就可以根据用户的不同请求,返回一个不同的响应结果。
下面是一个简单的路由示例:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.listen(3000, () => {
console.log('Server is listening on port 3000');
});
上面的代码创建了一个 app 对象,这个对象可以用来定义路由。app.get()
方法表示定义了一个 GET 请求的路由,当用户访问根路径 /
时,会执行传入的回调函数,并向客户端返回 Hello, World!
。
除了可以使用静态路由来响应请求,Express 还支持动态路由。这是指路由可以包含变量,这些变量可以以:name
的形式出现在路由路径中,并在回调函数中访问。
下面是一个简单的动态路由示例:
app.get('/users/:userID', (req, res) => {
const userID = req.params.userID;
res.send(`User ID: ${userID}`);
});
在这个例子中,路由包含了一个 :userID
变量,用户可以访问 /users/123
这样的路由,其中 123
就是路由变量的值。在回调函数中,我们可以通过 req.params.userID
访问这个变量,并向客户端返回一个响应。
有时候我们需要在路由处理程序执行之前或之后执行一些其他操作,例如鉴权、日志记录等。这时候,我们可以使用路由中间件。
路由中间件是一段代码,它可以在处理请求之前或之后执行。Express.js 具有一些内置的中间件函数,例如 express.json()
和 express.static()
。我们也可以自己实现一些中间件。
下面是一个示例,展示了如何实现一个简单的路由中间件:
const log = (req, res, next) => {
console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
next();
};
app.use(log);
app.get('/', (req, res) => {
res.send('Hello, World!');
});
在这个例子中,我们首先定义了一个 log
中间件函数。这个函数会在每个请求到达服务器之前先执行,它会在控制台中打印出请求的方法和 URL。然后,我们使用 app.use()
将这个中间件应用到了整个应用程序中。最后,我们定义了一个 GET 请求的路由,当用户访问根路径 /
时,它会执行回调函数并返回 Hello, World!
。
在 Express.js 中,路由是指客户端请求的 URL 和服务器端响应的代码之间的匹配关系。我们可以通过定义路由来为特定的 URL 请求提供响应,也可以通过动态路由为包含变量的 URL 请求提供响应。除了路由之外,Express.js 还提供了路由中间件的机制,这是指一段代码可以在处理请求之前或之后执行。我们可以使用一些内置的中间件函数,也可以自己实现一些中间件。