node.js - Node 中的 Express 模块导出函数或对象

标签 node.js express

在 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 的内置方法遇到过这个概念。例如callapplybind:

function express() {}

const boundExpress = express.bind(someContext);

关于node.js - Node 中的 Express 模块导出函数或对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49277169/

相关文章:

javascript - Node .js : webpack : Babel : Unknown substitution "BODY" given

node.js - Azure DevOps Pipeline 中的 Docker 镜像中的单元测试

node.js - 浏览器中未设置 Express session cookie

javascript - 是否可以在没有 npm start 的情况下运行 React 项目?

javascript - 如何控制 NPM 在哪里找到 server.js?

node.js - 使用 Node/Express 构建企业应用

node.js - 我们可以在不完全上传的情况下限制上传文件大小吗?

node.js - Sequelize - 如何在嵌套关联中使用 where 子句?

sqlite - 与 sqlite 的 Express.js session

javascript - Jest Mock(用于异步)文档似乎没有测试实际代码