node.js需要inheritance吗?

在我的server.js我包括下划线库。

var _ = require('underscore') 

我有这样的路线:

 // require routes require('./routes/document'); 

在文档path中,我想使用下划线。 但似乎_ var没有被inheritance/在文档范围内。 这是否意味着我必须在每个需要的路线上设置_ var? 还是有更聪明的方法来做到这一点?

谢谢。

       

网上收集的解决方案 "node.js需要inheritance吗?"

是的,你应该在需要它的文件中设置_。

或者,您可以通过删除var部分将其放到全局范围中。

 _ = require('underscore'); require('./routes/document'); // _ will be visible in document as well 

检查node.js模块文档,其中require()被彻底解释。

http://nodejs.org/docs/v0.4.5/api/modules.html

至于你的具体情况:

“模块在第一次被加载之后被caching,这意味着(除其他之外),每次调用require('foo')将返回完全相同的对象,如果它parsing为相同的文件。

因此,如果您在父库和“./routes/document”中都需要('下划线'),则只会加载下划线模块的一个实例,因此这两个variables实际上是相同的对象。

顺便说一句,你不想在全局范围中定义variables,因为它可能会产生副作用,并可能覆盖其他模块的属性。

最后,util模块提供了inheritance方法来inheritance另一个构造函数,并inheritance其原型。

http://nodejs.org/docs/v0.4.5/api/util.html#util.inherits

据我所知,node.js引擎“需要/收费”一个模块/ file.js在一个不同的范围(我不知道如何),出于安全原因(想象一个模块可以改变这是必需的variables,会是危险的!,关于这个问题的更多信息http://en.wikipedia.org/wiki/Information_hiding )。

唯一的例外是暴露在模块范围内的全局对象http://nodejs.org/api/globals.html

一个全局对象,正是对象“全局”,并且你没有var关键字定义的所有东西实际上都被添加到了全局对象中:

foo_var =“无论”

意思是:

console.log(global.foo_var)//logging“无论”