Javascript JSON或对象文本作为节点中的配置文件

Javascript JSON或对象文本作为节点中的配置文件,javascript,json,node.js,object,Javascript,Json,Node.js,Object,从这两篇文章中我们知道了JSON和objectliteral之间的区别 今天,我和我的同事讨论了这个主题,关于在Node.js中使用JSON或Object Literal作为配置文件 我同事的意见是使用JSON // message.json { "aa": "content", "enable": true, "media": { "event": "Winner", "message": "Congratulations!" }

从这两篇文章中我们知道了
JSON
objectliteral
之间的区别

今天,我和我的同事讨论了这个主题,关于在
Node.js
中使用
JSON
Object Literal
作为配置文件

我同事的意见是使用
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));
但是,我坚持使用
对象文本

// 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);

有人能告诉我他们之间的区别吗?有没有更好的呢?

我想主要的区别在于,在一天结束时,您将需要一个JavaScript对象来处理。因此,如果您是从JSON文件加载配置,那么将有额外的步骤将JSON字符串解析为JS对象


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

这取决于个人偏好,但我发现
导出
方式更方便,并且是一种需要模块的节点方式


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

这主要是基于观点的,但JSON配置有一个主要优势——它与语言无关,因此如果您需要一个非JS脚本来读取配置以用于其他目的,您可以很容易地做到这一点

使用JSON还有助于确保您的配置是静态的,并且消除了向其中添加逻辑和函数的诱惑


请注意,您也可以
require('./message.json')
as-of-Node>0.5.x,因此没有真正的功能差异

这可以归结为您团队的最佳实践,但我建议使用JSON

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

  • 此外,像JSON这样的序列化格式可以由多个系统处理,而使用JavaScript源文件来处理则变得非常困难。您的配置文件可能会在某个时候从配置服务器提供;在这种情况下,简单的序列化肯定是最好的选择,因为配置服务器可能最终使用数据库来保存配置信息,并根据需要将其作为JSON进行准备


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


您知道可以直接执行以下操作吗:
var data=require('file.json')
require()
将为您解析JSON?看见