Node.js全局变量并使用Require

时间:2011-09-05 18:49:37

标签: javascript node.js

许多人建议使用“导出”对象的“模块”,以便您可以将变量引入另一个文件 - 因为一旦您需要某个文件名一次,其他文件中的所有将来调用都需要相同的文件将立即返回在第一次需要该文件时给出的SAME导出对象,而不重新评估任何代码。这允许您通过要求文件在文件之间共享哪些变量而不使用全局来进行选择,这对于维护文件之间的状态或拆分需要使用相同变量的代码至关重要。

我的问题是:如何修改这些导出的变量 - 或者它们是不可更改的 - 如果它们不可更改,那么它们缺乏只能使用全局变量实现的功能......?

1 个答案:

答案 0 :(得分:1)

没有可导出变量这样的东西。 require函数返回一个通常的Javascript对象,你称之为“导出变量”的东西只是返回对象的属性。

在内部,require()维护一个字典映射模块标识符到这些对象,并保证为传递给它的相同模块标识符返回相同的对象。

因此,您可以根据需要修改这些属性。你甚至可以做这样的事情:

var connect = require('connect')
connect.foo = 42

此代码将有效地修补连接模块并向其添加foo“导出”。