为什么要在node.js中使用环境变量?
Why should we use environmental variables in node.js?
虽然我可以理解使用 .env
文件的好处,但使用它们与直接将值放在代码中相比有哪些优缺点(如果有的话)?我看过许多解释如何使用它们的指南,但从来没有解释过我们为什么要使用它们。他们被认为是最佳实践吗?每个生产项目都应该使用它们吗?
# File: .env
DB_HOST=localhost
DB_USER=rootz
DB_PASS=s1mpl3
# File: random_db.js
const db = require('db')
db.connect({
host: process.env.DB_HOST,
username: process.env.DB_USER,
password: process.env.DB_PASS
})
最好不要在代码中直接包含数据库配置信息。将这些项目保留在环境变量中有以下好处:
- 它允许您为程序的不同实例使用不同的数据库。例如,拥有同一个应用程序的开发和生产实例
- 它允许您保护数据库凭据。将这些凭据放在源代码中可能是 closed-source 高度保护代码的一个选项,但如果它们在其他地方
,保护它们会容易得多
- 它允许您在不更改代码的情况下更改数据库配置。也许您已决定在其他地方托管您的数据库。很高兴能够在不重建应用程序的情况下做到这一点
我敢肯定还有其他我现在没有想到的原因,但仅这些就足以说服大多数人。
虽然我可以理解使用 .env
文件的好处,但使用它们与直接将值放在代码中相比有哪些优缺点(如果有的话)?我看过许多解释如何使用它们的指南,但从来没有解释过我们为什么要使用它们。他们被认为是最佳实践吗?每个生产项目都应该使用它们吗?
# File: .env
DB_HOST=localhost
DB_USER=rootz
DB_PASS=s1mpl3
# File: random_db.js
const db = require('db')
db.connect({
host: process.env.DB_HOST,
username: process.env.DB_USER,
password: process.env.DB_PASS
})
最好不要在代码中直接包含数据库配置信息。将这些项目保留在环境变量中有以下好处:
- 它允许您为程序的不同实例使用不同的数据库。例如,拥有同一个应用程序的开发和生产实例
- 它允许您保护数据库凭据。将这些凭据放在源代码中可能是 closed-source 高度保护代码的一个选项,但如果它们在其他地方 ,保护它们会容易得多
- 它允许您在不更改代码的情况下更改数据库配置。也许您已决定在其他地方托管您的数据库。很高兴能够在不重建应用程序的情况下做到这一点
我敢肯定还有其他我现在没有想到的原因,但仅这些就足以说服大多数人。