2017-04-16 41 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() 

執行功能。該函數生成快速應用程序對象。此對象具有用於在標準快速應用程序中處理請求的所有方法。