导出模块 Node 中所需的模块会怎样?

What happens to modules required in exported modules Node?

我一直在尝试模块化我的服务器和网络应用程序。我已经在 Node here 和 here 中阅读了导出和 module.exports。

http://www.sitepoint.com/understanding-module-exports-exports-node-js/

http://liangzan.net/blog/blog/2012/06/04/how-to-use-exports-in-nodejs/

我知道它是如何使这些功能可用于其他文件/脚本的,但是导出文件中所需的模块会发生什么情况?如果我在某个文件中需要 websockets,导出它并在另一个文件中需要它,另一个文件是否从导出的文件继承 websockets?它是否类似于 C 中的头文件,只是将该模块粘贴到您的文件中?

当您 require() 节点中的模块时,它会在闭包内执行,并缓存模块导出的值。因此,同一模块(位于同一绝对路径)的任何其他 require() 将始终获得相同的 object/value/whatever.

因此,在您的 websockets 示例中,您在模块中执行的 require('websockets') 不会自动对需要您的模块的任何人可用。模块中的所有内容都在单独的本地范围内完成(您可以 read/write 所有模块都可以访问全局范围,但您 确实 应该 这样做)。这就是为什么您需要显式导出值以供外部人员查看。