Javascript Express-通过点表示法访问顶级Express函数
在一个简单的javascript文件中,我们可以通过在开头添加这两行代码(通过npm安装后)来使用express: 现在,根据express API指南: app对象通常表示Express应用程序。通过调用express模块导出的顶级express()函数来创建它Javascript Express-通过点表示法访问顶级Express函数,javascript,node.js,express,Javascript,Node.js,Express,在一个简单的javascript文件中,我们可以通过在开头添加这两行代码(通过npm安装后)来使用express: 现在,根据express API指南: app对象通常表示Express应用程序。通过调用express模块导出的顶级express()函数来创建它 既然app对象正在调用顶级express()函数,为什么我不能简单地使用: var app = foo.express(); 第一行将模块“express”导出的内容分配给名为express的变量。不同的模块将导出不同的内容(对象、
既然app对象正在调用顶级express()函数,为什么我不能简单地使用:
var app = foo.express();
第一行将模块“express”导出的内容分配给名为
express
的变量。不同的模块将导出不同的内容(对象、函数)。Express导出一个函数
该行:
var app = express()
执行函数。此函数用于生成express应用程序对象。此对象具有您在标准express应用程序中处理请求所使用的所有方法。传递的require函数“express”返回module.exports,其中包含顶级函数express(),类似于:
module.exports = express(){...}
这就是为什么我们仍然需要通过以下方式调用它:
var foo = require('express');
var app = foo();
或
您不能使用:
var foo = require('express');
var app = foo.express();
因为它不是这样设置的,所以如果express模块看起来像这样,您可以使用它:
module.exports.express = express(){...}
我不知道为什么你会选择其中一种而不是另一种,我只知道第二种技术只是直接公开了你的函数。“app object正在调用顶级express”这是不正确的。您正在调用express导出的模块,并将结果分配给
app
。这与CommonJS模块系统有关,并且不是特定于Express的。@E_net4如果var app正在调用由Express导出的模块,那么var Express做什么?Express
是一个函数,您可以调用它来实例化应用程序对象。请更新您的问题。你知道require
是如何工作的吗?@E_net4我相信我理解。它只是检索被调用的模块并将其放入缓存中。我的问题与语法有关。为什么我们不能通过点符号直接调用express函数呢。
var foo = require('express');
var app = foo.express();
module.exports.express = express(){...}