2013-01-17 152 views
-2

可能重複:
What is the purpose of NodeJS module.exports and how do you use it?JavaScript對象混亂

我有以下代碼:

var express = require('express'); 
var app = module.exports= express(); 
require('./config/environment.js')(app, express, __dirname); 
require('./routes/default.js')(app, __dirname); 


module.exports = function (app, express, dirname) { 
.... 
}; 

module.exports = function (app, dirname) { 
.... 
}; 

在此代碼發生了什麼事。第二個字符串表示,那個module.exports和app是同一個對象,對吧?

但在功能上(...)的部分應用程序作爲合格參數和代碼喜歡上「反對‘模塊’添加方法‘出口’,並做2次」我想添加一些功能,要使用在每個函數(...)中,但不能因爲不瞭解該結構中發生了什麼。 感謝

+1

這是在同一個文件?我也很困惑,爲什麼'module.exports'在同一個文件中被定義了三個不同的時間。如果這些陳述在單獨的文件中,請更清楚地表明。 – apsillers

+0

3個分隔文件。但爲什麼它很重要,一個文件還是三個? –

+1

它有很大的區別,因爲node.js模塊是基於文件的。當你在'require'中引用一個文件時,它會運行指定文件中的代碼,並在該文件中返回'module.exports'的值。請參閱[NodeJS module.exports的用途是什麼以及如何使用它?](http://stackoverflow.com/questions/5311334/what-is-the-purpose-of-nodejs-module-exports-and-你怎麼使用它),也[module.exports vs導出nodeJS](http://stackoverflow.com/questions/7137397/module-exports-vs-exports-in-nodejs) – apsillers

回答

1

你爲什麼分配module.exports三次?在你的代碼中,module.exports將首先等於通過express express返回的內容。然後module.exports將等於你的函數(不是它返回的內容),並且需要3個參數。然後module.exports將等於你的最終函數(同樣不是它返回的)帶兩個參數。因此,在你的代碼模塊的結尾處.exports將等於那個最終的函數。所以我沒有看到前兩個任務需要什麼。應用程序將等於module.exports在最後,因爲應用程序指向module.exports整個時間。不要緊,你要應用作爲參數傳遞給它通過,因爲在代碼中任何地方上面實際上,你的應用程序傳遞到功能,指派功能module.exports後。您在這裏完成的所有操作都是命名參數「應用程序」。

我認爲你要麼錯過代碼在這裏或變得非常的你可能在過去使用其他語言的混淆。

查找道格拉斯克羅克福德如果語言不清晰你。

我希望有幫助。

+0

正如你懷疑,OP已經省略了代碼。具體來說,OP已經感覺到每個'module.exports'賦值都在一個單獨的文件中(參見OP對該問題的評論)。 – apsillers