Node.js 节点中的Express模块导出函数或对象

Node.js 节点中的Express模块导出函数或对象,node.js,express,Node.js,Express,在节点中使用express时,我们编写了app=express(),这表明express模块只导出一个函数,即module.exports=function(){}类似的函数,但在使用静态文件的同时,我们执行类似于app.use(express.static())的操作显示express模块将静态功能作为一项功能导出对象。有人能解释一下这种矛盾是怎么可能的吗?函数在JavaScript中是一流的公民。您可以传递它们,并将它们有效地视为对象: function express() {} expr

在节点中使用express时,我们编写了
app=express()
,这表明express模块只导出一个函数,即
module.exports=function(){}
类似的函数,但在使用静态文件的同时,我们执行类似于
app.use(express.static())的操作
显示express模块将静态功能作为一项功能导出对象。有人能解释一下这种矛盾是怎么可能的吗?

函数在JavaScript中是一流的公民。您可以传递它们,并将它们有效地视为对象:

function express() {}

express.static = function () {};
express.SOME_CONSTANT = 42;
上面的示例允许使用者作为函数调用
express()
,或引用
express
的任何属性,其中一个恰好是另一个函数

您以前可能在使用内置方法时遇到过这个概念,例如
调用
应用
绑定

function express() {}

const boundExpress = express.bind(someContext);

非常感谢,先生:)