我已经创建了一个节点模块,用于声明我使用的常量值(我是一个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。
答案 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();
如果我误解了你的意图,请告诉我。感谢