訪問頂級快遞功能在一個簡單的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