Node.js:全局声明node_modules,还是根据需要在本地声明?

时间:2012-05-06 22:22:52

标签: node.js dependencies global local

应该在应用程序代码的开头全局声明node_modules依赖项,还是在需要时在本地声明?我想知道是否有最好的做法。

例如,我使用index.js引导我的应用程序,并在需要时需要脚本。例如,我的security.js模块可能需要使用node_hash。现在,我应该在security.js中要求

var node_hash = require('node_hash')

或在index.js全局要求它,以便security.js可以使用它(还有其他所有内容)吗?

1 个答案:

答案 0 :(得分:1)

在Node中,并不存在“全球需求”的概念。当您需要将模块插入另一个模块时,所需模块仅在您需要的模块中 。如果要在其他地方使用所需的模块,则需要再次要求它(或以某种方式将返回的对象传递给其他模块)。

因此,正确(唯一,真正)的答案是在需要的地方要求它们。请注意,Node使用require cache,因此所需的模块仅实际评估一次,并且对同一文件的多个需求返回相同的对象。

[编辑]分配给没有var声明的变量会将其分配到global范围(例如,可以通过节点中的global访问它)。你很少想这样做;它不仅难以确定变量的声明位置,而且还会导致命名空间问题。