在 Express.js 中,app 对象和 router 对象是两个重要的概念,它们都是用来处理 HTTP 请求的。但是它们之间有一些区别,本文将详细介绍这些区别,并提供示例代码。
app 对象
app 对象是 Express.js 应用程序的实例,它是全局唯一的。我们可以通过 express()
函数来创建一个 app 对象,如下所示:
const express = require('express'); const app = express();
app 对象有很多方法,其中最常用的是 get()
、post()
、put()
、delete()
等,用来处理 HTTP 请求。例如,我们可以使用 app.get()
来处理 GET 请求:
app.get('/', (req, res) => { res.send('Hello World!'); });
在这个例子中,我们定义了一个 GET 请求,当用户访问根路径时,服务器会返回一个包含字符串 "Hello World!" 的响应。
除了处理 HTTP 请求,app 对象还有一些其他的方法,比如 use()
方法,用来添加中间件。中间件是一个函数,用来处理 HTTP 请求和响应,可以在请求到达目标路由之前或之后执行。例如,我们可以使用以下代码来添加一个中间件:
app.use((req, res, next) => { console.log('Time:', Date.now()); next(); });
这个中间件会在每个请求到达之前都输出当前时间。
router 对象
router 对象是用来处理特定路由的,它可以被看作是 app 对象的子集。我们可以通过 express.Router()
函数来创建一个 router 对象,如下所示:
const express = require('express'); const router = express.Router();
和 app 对象一样,router 对象也有很多方法,例如 get()
、post()
、put()
、delete()
等,用来处理 HTTP 请求。但是和 app 对象不同的是,router 对象只处理与其相关的路由。例如,我们可以使用以下代码来定义一个路由:
router.get('/', (req, res) => { res.send('Hello World from router!'); });
在这个例子中,我们定义了一个与根路径相关的路由,当用户访问根路径时,服务器会返回一个包含字符串 "Hello World from router!" 的响应。
为了将 router 对象与 app 对象关联起来,我们需要使用 app.use()
方法将其添加到 app 对象中。例如,我们可以使用以下代码将 router 对象添加到 app 对象中:
app.use('/', router);
这样,当用户访问根路径时,服务器会使用 router 对象来处理请求。
区别
app 对象和 router 对象之间的主要区别在于它们处理的路由不同。app 对象处理全局路由,而 router 对象只处理与其相关的路由。这意味着,我们可以使用多个 router 对象来处理不同的路由,从而更好地组织我们的代码。
另一个区别是,router 对象可以使用中间件来处理请求,这些中间件只会在与其相关的路由上执行。这样,我们可以更好地控制中间件的使用范围,从而提高我们的代码的可维护性。
总结
本文介绍了 Express.js 中的 app 对象和 router 对象,并详细解释了它们之间的区别。通过本文的学习,我们可以更好地理解 Express.js 的工作原理,并在实际开发中更好地使用它们。
示例代码:
// javascriptcn.com 代码示例 const express = require('express'); const app = express(); const router = express.Router(); router.get('/', (req, res) => { res.send('Hello World from router!'); }); app.use('/', router); app.listen(3000, () => { console.log('Server started on port 3000'); });
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65852623d2f5e1655dfd34f9