在 Node 中使用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 prototype 的内置方法遇到过这个概念。例如call
、apply
或bind
:
function express() {}
const boundExpress = express.bind(someContext);
关于node.js - Node 中的 Express 模块导出函数或对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49277169/