在Redux中,我们可以使用props
作为常量,并使用state
作为全局变量。但是当我们需要一个全局常数时,我们必须使用什么?
以下是我可以考虑的选项。
哪一个可以保证最合适的架构?你能告诉我原因吗?
答案 0 :(得分:3)
我建议选项3。
原因:
可维护性 - 您只需更改此文件即可在所有使用此文件的模块中使用,因此修改非常简单。
可用性 - 由于它就像一个单独的模块,因此很容易导入和使用它。
调试 - 与其他选项相比,调试时不会有太多麻烦,因为模块中的所有内容都可以像我们首先编写的那样轻松访问。
答案 1 :(得分:2)
我还建议选项3.
因为您可以在一个地方分离出全局常量,并且可以在不触及代码的情况下更改它们。只需要重建项目。
您可以使用webpack。方法很简单 -
在文件中定义全局常量,让我们说 constants.js 并导出它们。 假设您要全局配置 API_KEY 常量
const API_KEYS= {
production: JSON.stringify('prod-const'),
development: JSON.stringify('dev-const'),
test: JSON.stringify('test-const')
};
//基于您获得的节点env变量获得可用的环境设置
const environment = function () {
switch(process.env.NODE_ENV) {
case 'production':
return 'production';
case 'development':
return 'development';
case 'test':
return 'test';
default: // in case ...
return 'development';
};
};
//基于env获取const值的Helper方法
const mapEnvToConstants = function (consts) {
return consts[environment()];
};
//使用webpack基于env变量集生成构建 // webpack config
module.exports = {
// ...
plugins: [
new webpack.DefinePlugin({
'const1': mapEnvToConstants(API_KEYS)
})
],
// ...
}
如果要指向不同的env变量或常量,则需要重建项目。