什么是 Express.js?
Express.js 是一个流行的 Node.js Web 应用程序框架,它提供了一个简单、快速和灵活的方式来构建 Web 应用程序。它是基于中间件的概念,这使得构建复杂的 Web 应用程序变得更加容易。
什么是中间件?
在 Express.js 中,中间件是一个函数,它可以访问请求对象(request object)、响应对象(response object)和应用程序的下一个中间件函数。中间件函数可以执行以下操作:
- 执行任何代码。
- 修改请求对象。
- 修改响应对象。
- 结束响应。
- 调用下一个中间件函数。
中间件函数的形式如下:
function middlewareFunction(req, res, next) { // 执行任何代码 next(); }
其中,req
是请求对象,res
是响应对象,next
是一个函数,用于调用下一个中间件函数。如果当前中间件函数不调用 next
,则请求将被挂起。
如何使用中间件?
为了使用中间件,我们需要使用 app.use()
方法。该方法将中间件函数添加到应用程序的中间件堆栈中。中间件函数将按照它们添加到堆栈中的顺序执行。
例如,下面的代码添加了一个中间件函数,用于记录所有请求的时间:
// javascriptcn.com 代码示例 const express = require('express'); const app = express(); app.use((req, res, next) => { console.log(`Time: ${Date.now()}`); next(); }); app.listen(3000, () => { console.log('Server started on port 3000'); });
在这个例子中,我们使用 app.use()
方法添加了一个中间件函数。该函数记录了当前时间,并调用了 next()
函数,以便将请求传递给下一个中间件函数。
中间件的类型
在 Express.js 中,有三种类型的中间件:
应用程序级别的中间件
应用程序级别的中间件绑定到应用程序对象(app
)上,并在所有路由中使用。例如,下面的代码添加了一个中间件函数,用于验证用户是否已经登录:
// javascriptcn.com 代码示例 const express = require('express'); const app = express(); const authenticateUser = (req, res, next) => { // 验证用户是否已经登录 next(); } app.use(authenticateUser); app.get('/', (req, res) => { // 处理 GET 请求 }); app.post('/', (req, res) => { // 处理 POST 请求 }); app.listen(3000, () => { console.log('Server started on port 3000'); });
在这个例子中,我们使用 app.use()
方法添加了一个中间件函数,用于验证用户是否已经登录。该函数将在所有路由中使用。
路由级别的中间件
路由级别的中间件绑定到特定的路由上。例如,下面的代码添加了一个中间件函数,用于验证用户是否有权限访问 /admin
路由:
// javascriptcn.com 代码示例 const express = require('express'); const app = express(); const authenticateUser = (req, res, next) => { // 验证用户是否已经登录 next(); } app.get('/', (req, res) => { // 处理 GET 请求 }); app.get('/admin', authenticateUser, (req, res) => { // 处理 GET 请求 }); app.listen(3000, () => { console.log('Server started on port 3000'); });
在这个例子中,我们使用 app.get()
方法添加了两个路由。第一个路由处理 /
路径的 GET 请求,第二个路由处理 /admin
路径的 GET 请求,并使用 authenticateUser
中间件函数进行身份验证。
错误处理中间件
错误处理中间件用于处理应用程序中的错误。例如,下面的代码添加了一个错误处理中间件函数,用于处理所有未处理的错误:
// javascriptcn.com 代码示例 const express = require('express'); const app = express(); app.get('/', (req, res) => { throw new Error('Something went wrong!'); }); app.use((err, req, res, next) => { console.error(err); res.status(500).send('Something went wrong!'); }); app.listen(3000, () => { console.log('Server started on port 3000'); });
在这个例子中,我们使用 app.get()
方法添加了一个路由,该路由将抛出一个错误。我们还使用 app.use()
方法添加了一个错误处理中间件函数,用于处理所有未处理的错误。
总结
在本文中,我们介绍了 Express.js 中间件的基本知识。我们学习了中间件的概念、如何使用中间件以及中间件的类型。通过使用中间件,我们可以轻松地构建复杂的 Web 应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6506c6bc95b1f8cacd274765