我刚刚开始学习JavaScript
/ node.js
(对后端Webdev的简要介绍),因此我在这个主题上完全是绿色的。
几天前,我在阅读一个教程,从中学到了如何将我的机密数据(例如密码)保存在config.json
文件中。
今天,我偶然发现了.env
文件,而且我对它了解的越多,似乎有越来越多的人使用它来实际存储密码。
那么我什么时候应该使用.env
,什么时候应该使用config.json
?
答案 0 :(得分:6)
.env
上的config.json
何时应用于什么用途?
这是一个相当困难的答案。一方面,在开发过程中,您仅应真正使用这两种工具中的任何一种。这意味着在生产环境或类似产品的环境中,您可以将以下变量直接添加到环境中:
NODE_ENV=development node ./sample.js --mongodb:host "dharma.mongohq.com" --mongodb:port 10065
彼此之间并没有真正的明显赢家,因为它们在不同方面都有帮助。您可以使用config.json
嵌套数据,但是另一方面,您也可以使用.env
还要注意的一点是,您永远不想将这些文件提交到源代码管理(git,svc等)。
另一方面,这些工具使初学者非常容易快速入门,而不必担心如何设置环境变量以及Windows环境与Linux环境之间的差异。
总而言之,我要说的完全取决于开发人员。
答案 1 :(得分:2)
.env
文件通常用于存储与特定部署环境有关的信息,而config.json
文件则可能用于存储特定于整个应用程序的数据。
这两种方法都行得通,而且配置文件是否存储在存储库中,更多取决于数据是否需要保密。
答案 2 :(得分:2)
Statistically comparing the two NPM packages (以及其他类似的解决方案)可能是自行决定的最佳方法。
在撰写本文时, dotenv 是一个较小的程序包,具有更大的支持(撇开实际贡献者,仅由尚存的问题数量和巨大的受欢迎程度推论得出)。它的寿命也更新了2.5年,如果大张旗鼓对您来说很重要,那么它的星数将是原来的两倍。
答案 3 :(得分:1)
这在很大程度上取决于个人喜好和所使用框架的约定。它们只是用于存储相同类型信息的不同格式。
一些示例配置文件格式:
.env
*.yml
(YAML文件)*.ini
(通常仅适用于Windows)*.json
最终,它们都实现了相同的目的:为您的应用程序提供特定于环境的信息(凭证,文件路径,连接字符串等)。选择最适合您选择框架的格式。
答案 4 :(得分:1)
我认为这完全取决于您,重要的是要记住为什么要使用这种方法。这个想法是将您的敏感数据保存在一个文件中,该文件不会被推送到源代码控制或本地环境以外的任何其他地方-这样可以使数据更安全。然后,当您准备部署到某处的远程服务器时,需要手动将这些值插入该环境。
我通常使用.env
,因为在许多远程环境(例如heroku)中都支持从.env
文件中获取数据的语法。将应用程序部署到heroku时,可以进入应用程序的设置并使用heroku仪表板UI放入环境变量-我不必弄清楚如何获取手动创建的json文件,等等。 (也许还有其他解决方法)。变量到位后,我仅使用process.env.variableName
来访问数据。