访问顶级快递功能在一个简单的JavaScript文件,我们可以通过在开头添加的这两行代码(通过NPM安装后)使用快递:快车 - 通过点符号
var foo = require('express');
var app = foo();
现在,根据快速API指南:
应用程序对象通常表示Express应用程序。通过调用快车模块
出口由于应用对象顶级快递()函数调用顶级快递()函数创建它,怎么就我是不能够只是简单地使用:
var app = foo.express();
访问顶级快递功能在一个简单的JavaScript文件,我们可以通过在开头添加的这两行代码(通过NPM安装后)使用快递:快车 - 通过点符号
var foo = require('express');
var app = foo();
现在,根据快速API指南:
应用程序对象通常表示Express应用程序。通过调用快车模块
出口由于应用对象顶级快递()函数调用顶级快递()函数创建它,怎么就我是不能够只是简单地使用:
var app = foo.express();
的要求,通过了“表达”返回module.exports功能,它拥有顶级功能Express(),类似于:
module.exports = express(){...}
这就是为什么我们仍然需要调用它要么通过:
var foo = require('express');
var app = foo();
或
var app = require('express')();
不能使用:
var foo = require('express');
var app = foo.express();
,因为它没有设立这样一来,你可以使用它,如果快递模块看起来是这样的:
module.exports.express = express(){...}
我不知道原因,为什么你会选择一个另一方面,我只知道第二种技术直接暴露你的功能。
第一行将任何模块“express”输出分配给名为express
的变量。不同的模块将导出不同的东西(对象,功能)。 Express输出功能。
线:
var app = express()
执行功能。该函数生成快速应用程序对象。此对象具有用于在标准快速应用程序中处理请求的所有方法。
“应用程序对象正在调用顶级表达式”这是不正确的。您正在调用由express导出的模块并将结果分配给'app'。这与CommonJS模块系统有关,并不特定于Express。 –
@ E_net4如果var app正在调用由express表示的模块,那么var express会做什么? –
'express'是你调用实例化应用程序对象的函数。 – dfsq