2011-12-05 75 views
3

我一个CMS系统的Node.js上的工作,我对那些Node.js的一个简单的问题Pro的Node.js的访问主模块

我创建模块和这些模块中需要的模块,但如果我已经将此模块包含在父模块中,我可以访问那些必需的模块吗?

例如:

main.js 
    var fs = require('fs'); 
    var sc = require('second.js'); 


second.js 
    var fs = require('fs'); // Is there any way to use the parent modules fs object? 

这似乎只是我,包括相同的模块在我的一些子模块,而这样做,如果可能的。

谢谢!

回答

6

它应该没有问题,因为节点首次包含模块时会缓存模块(即需要模块的副作用将不会再次执行)。您可以通过篡改require.cache来强制清除缓存(并因此重新执行所述副作用)。

+0

我读过,但似乎是多余的。但是,如果没有缺点,那么我会继续重新包括它们。 –

+0

我认为这是模块化系统的方法,因为每个模块都有明确的“输入”(需求和功能参数)和“输出”(输出)。 –

10

如果你来到这里寻找一种简单的方式来获得当前模块的父模块,这里是这样做的一种方式:

var parent = module.parent.exports; 

模块对象存储相当多的有用信息,包括加载它的父模块的引用。你也可以这样做:

var parent = module.require(module.parent.id); 
+9

可能值得注意的是,'module.parent'是指首先加载该模块的父代,而不是该特定实例中的父代。 –