2011-09-05 65 views
0

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

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

回答

1

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

在内部,require()维护字典映射模块标识符到这些目的和保证了相同的对象被返回以用于传递给它的相同的模块标识符。

所以你可以修改这些属性如何你想要的。你甚至可以做这样的事情:

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

该代码将有效猴子补丁连接模块,并添加foo“出口”到它。

+0

这不会解决你想要某种属性集,并提供给模块,而需要调用时的情况。我能找到的唯一方法是设置全局属性:global.foo = 42; var connect = require('connect'); –