Module.exports vs普通json的configuration文件

我看到了多种在Node.js中创buildconfiguration文件的方法。 一个在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" } 

在configuration文件中使用module.exports有没有什么好处? 有什么区别?

谢谢

javascript CommonJS模块

  • 注释
  • 条件语句
  • 循环等来填充默认值
  • 代码来改变基于NODE_ENV或类似的configuration
  • 代码来查找SSL密钥,API凭证等的外部文件
  • 更容易有后备和默认

JSON文件

  • 易于parsing和更新与外部工具
  • 与几乎所有的编程语言兼容
  • 纯数据可以被加载而不被执行
  • 易于漂亮的打印
  • JSON可以作为基础开始,上面介绍的关于CommonJS模块的所有代码可以存在于config.js模块中,该模块读取config.json作为开始点

所以我总是从一个commonjs模块开始,为了方便起见,但是保持简单的逻辑。 如果你的config.js有错误,需要testing,那可能太复杂了。 吻。 如果我知道其他事情将要在我的configuration中捅一下,我会使用JSON文件。

谢谢@ jonathan-ong,看起来像config.js( 不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' } } }; 

js文件有@Peter Lyons提到的自己的特权。 但是,如果我不必访问外部资源的API密钥等我宁愿JSON的configuration文件。

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

并使用configuration模块来使用这些configuration