首页 > 解决方案 > 拆分express和app有什么目的吗?

问题描述

我在(每个?) Express 应用程序中看到这两行。

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

我想知道是否可以将任何参数传递给express()

在这里检查并没有看到任何

https://expressjs.com/en/4x/api.html

为什么有些方法在 express() 上,有些在 app() 上?

似乎它们应该组合在一起,并且在一个对象上拥有所有方法。

标签: javascriptnode.jsexpress

解决方案


express不带任何参数,不。调用它的目的是创建应用程序对象,因此即使没有参数,您必须调用它也是有意义的。

你经常看到的另一种写法是:

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

不过,在使用 ESM 时,它需要再次分开。

import express from "express"; // Or similar

const app = express();

在评论中你说:

例如,在创建应用程序的情况下我能做些什么有用的事情?有什么我只能用快递做的吗?

据我所知,您必须至少创建一个 Application 对象才能对 Express 做任何有用的事情。请注意,您不必只创建一个应用程序。这是典型的用例,但没有理由不能创建在不同端口上运行的多个应用程序。

您可能想知道为什么 express 不能直接从require. 原因是模块只加载一次并缓存,所以你得到的东西require是共享的。因此 Express 导出了express用于创建 Application 对象(或多个对象,如果您想要多个对象)的函数。


推荐阅读