Module.exports vs plain json for config files

时间:2013-08-27 22:52:06

标签: json node.js config

我看到在Node.js中创建配置文件的多种方法。一个在js文件中使用module.exports,一个只使用普通的json对象。

// config1.js
module.exports = {
  config_1: "value 1",
  config_2: "value 2"
}
// config2.json
{
  "config_1": "value 1",
  "config_2": "value 2"
}

在配置文件中使用module.exports有什么好处吗?有什么区别?

3 个答案:

答案 0 :(得分:24)

javascript CommonJS Module

  • 评论
  • 条件
  • 循环等填充默认值
  • 基于NODE_ENV或类似
  • 更改配置的代码
  • 代码,用于查找SSL密钥,API凭据等的外部文件
  • 更容易有后备和默认

JSON文件

  • 易于使用外部工具进行解析和更新
  • 与几乎所有编程语言兼容
  • 可以在不执行的情况下加载的纯数据
  • 易于打印
  • JSON可以作为基础开始,上面描述的关于CommonJS模块的所有代码项都可以存在于config.js模块中,该模块读取config.json作为起点

所以我总是从一个commonjs模块开始,以方便,但保持任何逻辑简单。如果你的config.js有bug并需要测试,那可能太复杂了。吻。如果我知道其他事情需要在我的配置中查找,我将使用JSON文件。

答案 1 :(得分:10)

谢谢@ jonathan-ong,看起来像config.js( NOT JSON文件)按预期工作,我可以发表一些评论。

module.exports = {

  // Development Environment

  development: {
    database: {
      host: '127.0.0.1',
      login: 'dev',
      password: 'dev'
    }
  },

  // Production Environment

  production: {
    database: {
      host: '127.0.0.1',
      login: 'prod',
      password: 'prod'
    }
  }
};

答案 2 :(得分:0)

js文件有自己的特权,如提到的@Peter Lyons。但是,如果我不必访问API密钥等的外部资源,我希望 JSON 用于配置文件。

简单的理由是我不必为了更改配置文件而触摸我的代码。我可以简单地创建一个API来编辑这些json文件,以添加,更新或删除任何配置键值对。甚至可以使用API​​为单独的环境添加全新的配置文件。

并使用配置模块来使用这些配置