2017-04-16 38 views
-2

访问顶级快递功能在一个简单的JavaScript文件,我们可以通过在开头添加的这两行代码(通过NPM安装后)使用快递:快车 - 通过点符号

var foo = require('express'); 
var app = foo(); 

现在,根据快速API指南:

应用程序对象通常表示Express应用程序。通过调用快车模块

出口由于应用对象顶级快递()函数调用顶级快递()函数创建它,怎么就我是不能够只是简单地使用:

var app = foo.express(); 
+0

“应用程序对象正在调用顶级表达式”这是不正确的。您正在调用由express导出的模块并将结果分配给'app'。这与CommonJS模块系统有关,并不特定于Express。 –

+0

@ E_net4如果var app正在调用由express表示的模块,那么var express会做什么? –

+0

'express'是你调用实例化应用程序对象的函数。 – dfsq

回答

0

的要求,通过了“表达”返回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(){...} 

我不知道原因,为什么你会选择一个另一方面,我只知道第二种技术直接暴露你的功能。

0

第一行将任何模块“express”输出分配给名为express的变量。不同的模块将导出不同的东西(对象,功能)。 Express输出功能。

线:

var app = express() 

执行功能。该函数生成快速应用程序对象。此对象具有用于在标准快速应用程序中处理请求的所有方法。