Howto - 模块内引用模块导出的值

时间:2016-05-01 17:35:53

标签: javascript node.js

我已经创建了一个节点模块,用于声明我使用的常量值(我是一个js / node新手,来自静态类型语言)......

module.exports = {
  HELLO : "hello",

  BLAH_VAL : "blahv",
  BLAH_OBJ : {
    type : "blahtype",
    value : BLAH_VAL        // syntax error
    value2 : this.BLAH_VAL    // doesn't work
  },
  // etc.
};

问题是“价值:BLAH_VAL”。我想要的是将其解释为 value:“blahv”,但不重复文字字符串。我得到一个语法错误,如果我使用“value:this.BLAH”就会消失,但是'value'会完全消失。

或许我需要在一个模块中定义简单值,在第二个模块中定义引用第一个模块的复合类型?

我在Ubuntu上使用Node 4.3.2。

3 个答案:

答案 0 :(得分:0)

这有效,但它需要额外的代码,所以我认为它不是最佳的,我希望其他人会发布更好的解决方案。

var BLAH_VAL_TEXT = "blahv";

module.exports = {
  BLAH_VAL : BLAH_VAL_TEXT;
  BLAH_OBJ : {
    type : "blahtype",
    value : BLAH_VAL_TEXT
  }
};

答案 1 :(得分:0)

你需要对象。所以让对象工厂!

function SettingsFactory() {
  var BLAH_VAL_TEXT = "blahv";
  return {
    BLAH_VAL: BLAH_VAL_TEXT,
    BLAH_OBJ: {
      type: "blahtype",
      value: BLAH_VAL_TEXT
    }
  }
}

module.exports = SettingsFactory();

另见typescript。它是具有ES6-7

的严格类型和新功能的JS

答案 2 :(得分:0)

使用函数创建对象并附加到module.exports。

,而不是使用JSON格式

以下内容应该有效:

function constants() {

    this.HELLO = "hello";
    this.BLAH_VAL = "blahv";
    this.BLAH_OBJ = {
        type : "blahtype",
        value2 : this.BLAH_VAL
    };

};

module.exports = new constants();

如果我误解了你的意图,请告诉我。感谢