Express.js app 对象和 router 对象的区别

在 Express.js 中,app 对象和 router 对象是两个重要的概念,它们都是用来处理 HTTP 请求的。但是它们之间有一些区别,本文将详细介绍这些区别,并提供示例代码。

app 对象

app 对象是 Express.js 应用程序的实例,它是全局唯一的。我们可以通过 express() 函数来创建一个 app 对象,如下所示:

app 对象有很多方法,其中最常用的是 get()post()put()delete() 等,用来处理 HTTP 请求。例如,我们可以使用 app.get() 来处理 GET 请求:

在这个例子中,我们定义了一个 GET 请求,当用户访问根路径时,服务器会返回一个包含字符串 "Hello World!" 的响应。

除了处理 HTTP 请求,app 对象还有一些其他的方法,比如 use() 方法,用来添加中间件。中间件是一个函数,用来处理 HTTP 请求和响应,可以在请求到达目标路由之前或之后执行。例如,我们可以使用以下代码来添加一个中间件:

这个中间件会在每个请求到达之前都输出当前时间。

router 对象

router 对象是用来处理特定路由的,它可以被看作是 app 对象的子集。我们可以通过 express.Router() 函数来创建一个 router 对象,如下所示:

和 app 对象一样,router 对象也有很多方法,例如 get()post()put()delete() 等,用来处理 HTTP 请求。但是和 app 对象不同的是,router 对象只处理与其相关的路由。例如,我们可以使用以下代码来定义一个路由:

在这个例子中,我们定义了一个与根路径相关的路由,当用户访问根路径时,服务器会返回一个包含字符串 "Hello World from router!" 的响应。

为了将 router 对象与 app 对象关联起来,我们需要使用 app.use() 方法将其添加到 app 对象中。例如,我们可以使用以下代码将 router 对象添加到 app 对象中:

这样,当用户访问根路径时,服务器会使用 router 对象来处理请求。

区别

app 对象和 router 对象之间的主要区别在于它们处理的路由不同。app 对象处理全局路由,而 router 对象只处理与其相关的路由。这意味着,我们可以使用多个 router 对象来处理不同的路由,从而更好地组织我们的代码。

另一个区别是,router 对象可以使用中间件来处理请求,这些中间件只会在与其相关的路由上执行。这样,我们可以更好地控制中间件的使用范围,从而提高我们的代码的可维护性。

总结

本文介绍了 Express.js 中的 app 对象和 router 对象,并详细解释了它们之间的区别。通过本文的学习,我们可以更好地理解 Express.js 的工作原理,并在实际开发中更好地使用它们。

示例代码:

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65852623d2f5e1655dfd34f9


纠错
反馈