两次调用 express() 有什么区别

What is the difference between the two calls to express()

我有 2 个 require('express) 调用。 第一:

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

第二个:

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

有什么区别,如果两者的方法相同(use、get、post 等),为什么第一次调用函数,第二次创建对象?

您的第二次调用不正确,您只是在调用(要求)express,这与您的第一次调用类似。

我从来没有做过 const router = new Router();,所以我不确定那会完成什么。

我通常会-

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

即使是您的第一个电话,您也可以做到

app.get()app.post()

按快递解释

express.Router class is used to create modular, mountable route handlers. A Router instance is a complete middleware and routing system

了解更多信息 here

GeekforGeeks explains express.Router() very well

我觉得你的问题漏掉了什么。你的第二个例子表明:

const Router = require('express');

...但我认为您是想这样做:

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

...无论如何,下面的内容应该能帮助您更好地理解。

在 express 中,您可以将 Routers 视为小型迷你应用程序...轻量级 express 应用程序...具有自己的路由。事实上,主要的“快递”对象本身就是一个路由器。例如,您可能有一堆用于管理用户的端点:

// ./routes/user-routes.js
const userRoutes = new express.Router();
userRoutes.get('/', getAllUsers);
userRoutes.get('/:userId', getUserById);
userRoutes.post('/', createUser);
userRoutes.put('/:id', updateUser);
userRoutes.delete('/:id', removeUser);

请注意 none 的 url 中如何包含 /users/ 之类的内容。这很重要,因为现在可以在更大的 express 应用程序中“安装”(缺少更好的术语)这个小迷你应用程序,如下所示:

const express = require('espress');
const userRoutes = require('./routes/user-routes');

const app = express();
app.use('/path/to/users', userRoutes);

注意 userRoutes 是如何“挂载”在 /path/to/users 上的,这样所有用户请求都会发生在以下 URL 上:

  • GET /path/to/users - 获取所有用户
  • GET /path/to/users/1234 - 获取 ID 为“1234”的用户
  • ...你明白了

这主要是一种将您的应用程序视为编排在一起的小型迷你应用程序的便捷方式。