用于配置文件的 Module.exports 与普通 json
Posted
技术标签:
【中文标题】用于配置文件的 Module.exports 与普通 json【英文标题】:Module.exports vs plain json for config files 【发布时间】:2013-08-30 20:51:49 【问题描述】:我看到了多种在 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 有什么好处吗?有什么区别?
【问题讨论】:
唯一真正的区别是您不能在 json 文件中添加 cmets。如果你想要一个带有 cmets 的 json 文件,你可能对使用 rc 文件感兴趣。 感谢 Jonathan,我注意到 module.exports 仅在 *.js 文件中有效,而 json 对象仅在 *.json 文件中有效。我可以在 *.js 文件中使用 module.exports 发表评论。 另一个重要的注意事项是实际的 .json 文件具有更严格的语法,例如键必须用双引号括起来,您不能在项目数组的末尾有逗号,等 【参考方案1】:感谢@jonathan-ong,看起来 config.js(NOT JSON 文件)按预期工作,我可以放一些 cmets。
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】:javascript CommonJS 模块
cmets 条件 循环等填充默认值 根据 NODE_ENV 或类似代码更改配置的代码 用于查找 SSL 密钥、API 凭据等外部文件的代码 更容易拥有回退和默认值JSON 文件
易于使用外部工具解析和更新 与市面上几乎所有的编程语言兼容 无需执行即可加载的纯数据 易于打印 JSON 可以作为基础开始,上面描述的关于 CommonJS 模块的所有代码项都可以存在于一个 config.js 模块中,该模块读取 config.json 作为它的起点所以为了方便起见,我总是从 commonjs 模块开始,但要保持其中的任何逻辑简单。如果您的 config.js 有错误并需要测试,那可能太复杂了。吻。如果我知道其他东西会在我的配置中出现,我将使用 JSON 文件。
【讨论】:
【参考方案3】:正如@Peter Lyons 提到的,js 文件有自己的优势。但是,如果我不必访问外部资源以获取 API 密钥等。我更喜欢 JSON 用于配置文件。
原因很简单,我不必为了更改配置文件而修改我的代码。我可以简单地制作一个 API 来编辑这些 json 文件以添加、更新或删除任何配置键值对。甚至使用 API 为单独的环境添加全新的配置文件。
并使用配置模块来消费这些配置
【讨论】:
以上是关于用于配置文件的 Module.exports 与普通 json的主要内容,如果未能解决你的问题,请参考以下文章
Nodejs/Express/Typescript 需要 module.exports