📜  express() 和 express.router() 之间的区别 - Javascript (1)

📅  最后修改于: 2023-12-03 15:00:40.390000             🧑  作者: Mango

Express() 和 Express.Router() 之间的区别

简介

在 Node.js 中,Express.js 是一个非常流行的 Web 框架。它允许你快速轻松地搭建 Web 应用程序。在 Express.js 中,有两种主要的路由处理方式,即 Express()Express.Router()

Express()

Express() 是一个构造函数,当你使用它时,它会返回一个 Express 应用程序对象。这个应用程序对象允许你配置中间件和路由,以便用于处理客户端请求。

例如,下面是一个使用 Express() 搭建起来的 Web 应用程序示例:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Server started on port 3000');
});

在上面的代码片段中,我们创建了一个 Express 应用程序对象,然后定义了一个路由处理函数,这个路由处理函数将会对客户端访问根路径时的请求做出响应。

Express.Router()

Express.Router() 是一个独立的路由系统。它允许你创建模块化的路由处理器,并且可以在一个应用程序中的多个地方使用。

例如,下面是一个使用 Express.Router() 获取一个特定用户的路由示例:

const express = require('express');
const router = express.Router();

router.get('/:id', (req, res) => {
  res.send(`Hello User ${req.params.id}`);
});

module.exports = router;

在上面的代码片段中,我们创建了一个独立的路由处理器,并定义了一个获取特定用户的路由。这个路由可以通过一个参数来表示用户 ID。

在应用程序的入口文件中,我们可以将这个路由模块引入,并与应用程序对象进行挂载:

const express = require('express');
const app = express();
const userRouter = require('./userRouter');

app.use('/user', userRouter);

app.listen(3000, () => {
  console.log('Server started on port 3000');
});

在上面的代码片段中,我们将路由模块 userRouter 挂载到了应用程序对象的 /user 路径上。这就意味着,当客户端访问 /user/:id 时,就会触发 userRouter 中定义的路由处理器。

总结

Express()Express.Router() 的主要区别在于它们的使用场景。适当选择适合场景的路由处理方式能够使得代码更加简洁和易于维护。通常来说,当你需要快速地创建简单的路由时,应该优先选择 Express();而当你需要创建一个复杂的模块化路由系统时,则需要使用 Express.Router()