Javascript .env vs config.json

Javascript .env vs config.json,javascript,node.js,Javascript,Node.js,我刚刚开始学习JavaScript/node.js(对后端webdev的一个温和的介绍),因此我对这个主题完全没有兴趣 几天前,我正在阅读一篇教程,从中我学会了将机密数据(如密码)保存在config.json文件中 今天我偶然发现了.env文件,我对它了解得越多,似乎就有越多的人使用它来实际存储密码 因此,我应该在何时使用.env以及何时使用config.json?这在很大程度上取决于个人偏好和所使用框架的约定。它们只是存储相同类型信息的不同格式 一些示例配置文件格式: .env *.yml(

我刚刚开始学习
JavaScript
/
node.js
(对后端webdev的一个温和的介绍),因此我对这个主题完全没有兴趣

几天前,我正在阅读一篇教程,从中我学会了将机密数据(如密码)保存在
config.json
文件中

今天我偶然发现了
.env
文件,我对它了解得越多,似乎就有越多的人使用它来实际存储密码


因此,我应该在何时使用
.env
以及何时使用
config.json

这在很大程度上取决于个人偏好和所使用框架的约定。它们只是存储相同类型信息的不同格式

一些示例配置文件格式:

  • .env
  • *.yml
    (YAML文件)
  • *.ini
    (通常仅限Windows)
  • *.json

最终,它们都实现了相同的目的:为应用程序提供特定于环境的信息(凭据、文件路径、连接字符串等)。选择最适合您选择的框架的格式。

.env
文件通常用于存储与特定部署环境相关的信息,而
config.json
文件可能用于存储整个应用程序特定的数据


这两种方法都有效,配置文件是否存储在存储库中更多的是取决于数据是否需要保密。

我认为这真的取决于您,需要记住的重要一点是为什么要使用这种方法。这样做的目的是将敏感数据保存在一个文件中,而该文件不会被推送到源代码管理或本地环境以外的任何其他地方,从而使数据更安全。然后,当您准备部署到某个远程服务器时,您需要手动将这些值插入到该环境中

我通常使用
.env
,因为从
.env
文件获取数据的语法在许多远程环境中都受支持,比如heroku。当我将应用程序部署到heroku时,我可以进入应用程序的设置,并使用heroku仪表板UI输入环境变量-我不必弄清楚如何手动创建json文件,等等。。。(也许还有其他解决办法)。变量就位后,我只需使用
process.env.variableName
访问数据。

问题 什么时候应该在
config.json
上使用
.env
,为什么

答案 这是一个相当困难的答案。一方面,您应该在开发过程中真正使用这两种工具中的任何一种。这意味着,在生产或类似产品的环境中,您可以直接将这些变量添加到环境中:

NODE_ENV=development node ./sample.js --mongodb:host "dharma.mongohq.com" --mongodb:port 10065
没有真正明确的胜利者超过另一个本身,因为它们都在不同的方面有所帮助。您可以使用
config.json
嵌套数据,但另一方面,您也可以使用
.env
创建更干净的数据结构

还需要注意的是,您永远不希望将这些文件提交给源代码管理(git、svc等)

另一方面,这些工具使初学者很容易快速入门,而不必担心如何设置环境变量以及windows环境和linux环境之间的差异

总而言之,我认为这完全取决于开发者

(以及其他类似的解决方案)可能是您自己做出决定的最佳方式

在撰写本文时,是一个小得多、支持度更高的软件包(撇开实际贡献者不谈,仅根据剩余问题的数量和巨大的受欢迎程度推断)。它也更新了2.5年,而且,如果大张旗鼓对你很重要的话,它的明星数量是你的两倍


大多数人不使用config包,而只是使用require或fs with json parse将其加载到目录中