应该在应用程序代码的开头全局声明node_modules依赖项,还是在需要时在本地声明?我想知道是否有最好的做法。
例如,我使用index.js
引导我的应用程序,并在需要时需要脚本。例如,我的security.js
模块可能需要使用node_hash
。现在,我应该在security.js
中要求
var node_hash = require('node_hash')
或在index.js
全局要求它,以便security.js
可以使用它(还有其他所有内容)吗?
答案 0 :(得分:1)
在Node中,并不存在“全球需求”的概念。当您需要将模块插入另一个模块时,所需模块仅在您需要的模块中 。如果要在其他地方使用所需的模块,则需要再次要求它(或以某种方式将返回的对象传递给其他模块)。
因此,正确(唯一,真正)的答案是在需要的地方要求它们。请注意,Node使用require cache,因此所需的模块仅实际评估一次,并且对同一文件的多个需求返回相同的对象。
[编辑]分配给没有var
声明的变量会将其分配到global
范围(例如,可以通过节点中的global
访问它)。你很少想这样做;它不仅难以确定变量的声明位置,而且还会导致命名空间问题。