Module.exports vs plain json for config files

Nam*_*yen 18 json config node.js

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

// config1.js
module.exports = {
  config_1: "value 1",
  config_2: "value 2"
}
Run Code Online (Sandbox Code Playgroud)
// config2.json
{
  "config_1": "value 1",
  "config_2": "value 2"
}
Run Code Online (Sandbox Code Playgroud)

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

Pet*_*ons 25

javascript CommonJS模块

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

JSON文件

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

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


Nam*_*yen 11

谢谢@ 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'
    }
  }
};
Run Code Online (Sandbox Code Playgroud)