const a = express() 是如何工作的?

How does the const a = express() works exactly?

我最近开始学习Node/express。一个疑问现在困扰了我几个星期。我知道这是做什么的,而且我已经能够克服它。但是我无法理解 'const a = express()'.

行中使用的逻辑
express = require('express');
const a = express()

我想我以前在 javascript 中没见过这个。在这种情况下,express 是一个对象或函数(函数在 JavaScript 中也是对象)对吗?这一行让变量 'a' 可以访问许多重要的方法,例如 'listen' 和 'get'。但是这里的语法不会错吗?要使用express函数,我们需要写like

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

或者我们需要使用对象解构来写like

const {express} = require('express');
const a = express()

也许混淆是假设 express 模块的默认导出不是函数,但正如其他人指出的那样,expressdefault export 一个函数。导入后,该函数的返回值是 Express 的一个实例,您可以在其中访问您提到的所有这些方法。

假设 function express 的定义和它 returns 的对象看起来像

class Express {
 // Implementation of Express server 
}
// You're importing this and calling the function, receiving a new instance of this class. In reality this could be a class or object for all I know. 
export default function express() {
  return new Express() 
}