JSON或Object Literal作为Node中的配置文件

时间:2015-08-18 04:18:52

标签: javascript json node.js object

我们知道这两个帖子中 JSON Object Literal 之间的区别

What is the difference between JSON and Object Literal Notation? What's the difference between Javascript Object and JSON object

今天,我与我的同事讨论了在JSON中使用Object LiteralNode.js作为配置文件的问题。

我的同事的意见是使用JSON

// message.json
{   "aa": "content",
    "enable": true,
    "media": {
        "event": "Winner",
        "message": "Congratulations!"
    }
}

// app.js
filepath = "./message.json";
var file = fs.readFileSync(filepath, 'utf-8');
console.log(JSON.parse(file));

但是,我坚持Object Literal

// message.js
exports.value = {
    "aa": "content",
    "enable": true,
    "media": 
    {
        "event": "Winner",
        "message": "Congratulations!",
    }
}
//app.js
var vv = require('./message.js');

console.log(vv.value.media.message);

有人可以告诉我他们之间的区别吗?任何一个人是好还是不好?

5 个答案:

答案 0 :(得分:2)

这主要是基于意见的,但是JSON配置的一个主要优势 - 它与语言无关,所以如果你需要一个非JS脚本来读取配置用于其他目的,你可以轻松地做到。

使用JSON还有助于确保您的配置是静态的,并消除了开始向其添加逻辑和功能的诱惑。

请注意,从Node>开始,您也可以require('./message.json') 0.5.x,所以没有真正的功能差异。

答案 1 :(得分:2)

归结为团队的最佳实践,但我建议使用JSON。

  • node.js约定是将json用于配置文件 - 例如,package.json就是一个例子。

  • 此外,像JSON这样的序列化格式可以由多个系统处理,而使用JavaScript源文件这样做很麻烦。您的配置文件可能在某个时候从配置服务器提供;一个简单的序列化肯定会成为这种情况下的方法,因为配置服务器可能最终使用数据库来保存配置信息并简单地将其准备为按需JSON

答案 2 :(得分:0)

这取决于个人喜好,但我发现exports方式更方便,更节点的方式需要模块。

我认为在后面需要做的是你在第一种方法中做的类似操作,所以为什么要重新发明轮子。

答案 3 :(得分:0)

我的团队使用JSON,但至少有些人认为JS提供了更大的灵活性。

https://blog.risingstack.com/node-js-best-practices-part-2/

答案 4 :(得分:-1)

我猜主要区别在于,在一天结束时,您需要一个JavaScript对象才能使用。因此,如果您从JSON文件加载配置,则会有一个额外的步骤将JSON字符串解析为JS对象。

根据此JSON文件的大小,解析它时可能会丢失性能。