【问题标题】:Node.js Global Variables and using RequireNode.js 全局变量和使用 Require
【发布时间】:2011-09-05 18:49:37
【问题描述】:

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

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

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

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

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

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

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

    此代码将有效地猴子补丁连接模块并将foo“export”添加到它。

    【讨论】:

    • 这并不能解决您希望在进行 require 调用时设置某个属性并且对模块可用的情况。我能找到的唯一方法是设置全局属性:global.foo = 42; var connect = require('connect');
    猜你喜欢
    • 2012-11-05
    • 2012-12-22
    • 2017-06-02
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    相关资源
    最近更新 更多