2012-05-06 104 views
1

應該在應用程序代碼的開始處全局聲明node_modules依賴關係還是在需要時在本地聲明node_modules依賴關係?我想知道是否有最佳做法。Node.js:全局聲明node_modules,或根據需要本地聲明node_jodules?

例如,我使用index.js引導我的應用程序,並在需要時需要腳本。例如,我的security.js模塊可能需要使用node_hash。現在,我應要求在security.js作爲

var node_hash = require('node_hash') 

或全局需要它index.js所以它適用於security.js(也一切)?

回答

1

在Node中,並沒有真正的「全局需求」的概念。當您需要將模塊插入另一個模塊時,需要的模塊是,只有可用於您需要的模塊中。如果你想在其他地方使用那個需要的模塊,你將需要再次需要它(或以某種方式將返回的對象傳遞到其他模塊中)。

因此,正確的答案是在需要的地方要求他們。請注意,節點使用require cache,因此所需模塊僅真正評估一次,並且針對同一文件的多個需求返回相同的對象。

[編輯]分配給一個聲明爲var的變量,將其分配給global範圍(例如,可以通過節點中的global訪問)。你很少想要這樣做;不僅難以確定變量的聲明位置,而且還會導致命名空間問題。

+0

嗯,我可以有'node_hash = require('node_hash')'(注意'var'),並且之後將被全局應用於所有必需的模塊,因爲我已經編寫了類似的代碼。我想知道將模塊分配給全局變量是好還是不好的做法。 – Andy

+0

我明白你的意思了;更新我的答案。 –