NodeJS需要function

当我发现需求不在其中时,我正在检查节点的全局和模块。 我不知道这是否是神奇的,但如果任何人都可以解释如果require是全局的,那么为什么它不在全局对象中,也不在模块对象中?

因为它在范围内 。 在文件中加载时,幕后的节点会封装源代码,使得代码看起来像这样:

(function (exports, require, module, __filename, __dirname) { // here goes what's in your js file }); 

然后调用匿名函数,传入一个新的对象用于exports并引用require函数。 ( 更多细节在这里 )

现在应该很明显,为什么你可以打电话require即使它不是一个真正的全球性。

要求是将核心模块编译到二进制文件中。 请在此处详细阅读http://nodejs.org/api/modules.html#modules_core_modules

核心模块在lib /文件夹的节点源文件中定义。

如果核心模块的标识符被传递给require(),则核心模块总是被优先加载。 例如,require('http')将总是返回内置的HTTP模块,即使有这个名字的文件。