26

我看到了多种在 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 有什么好处吗?有什么区别?

4

3 回答 3

34

javascript CommonJS 模块

  • 注释
  • 条件句
  • 循环等填充默认值
  • 基于 NODE_ENV 或类似更改配置的代码
  • 用于查找 SSL 密钥、API 凭据等的外部文件的代码
  • 更容易有回退和默认值

JSON文件

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

因此,为了方便起见,我总是从 commonjs 模块开始,但要保持其中的任何逻辑简单。如果您的 config.js 有错误并需要测试,那可能太复杂了。吻。如果我知道其他东西会在我的配置中出现,我将使用 JSON 文件。

于 2013-08-28T01:55:13.333 回答
14

感谢@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'
    }
  }
};
于 2013-08-27T23:47:51.777 回答
0

正如@Peter Lyons 提到的,js 文件有自己的好处。但是,如果我不必访问外部资源来获取 API 密钥等。我更喜欢JSON作为配置文件。

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

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

于 2017-08-16T07:53:22.243 回答