在Node.js中,文件和模块是一一对应的。例如,考虑下面这个名为 foo.js 的文件:在第一行, foo.js 加载与 foo.js 同一目录的模块 circle.js 。在这个例子中,变量 PI 对于 circle.js 来说是私有变量。当某个 module 直接从Node.js运行时,它会将 require.main 设置该 module 。就拿文件 foo.js 来说,如果运行 node foo.js 这个属性就是 true 。Node.js的 require() 函数支持一些合理的目录结构。而 bar 包也很有可能依赖其他的包,并且在某些特殊情况下,这些依赖包甚至可能会产生循环依赖。当 foo 包中 require 时,它就可以软链到指定版本的 /usr/lib/node/foo/1.2.3/node_modules/bar 。这是一个重要的功能。使用它,可以返回“partially done”对象,从而允许根据依赖关系一层一层地加载模块,即使这样做可能会导致循环依赖。核心模块在Node.js的源码 lib/ 文件夹中。当 app.js 加载了这两个模块时,它们都已经完成。
暂无评论