是否有更好的方法在Vue.js中编写函数,如下面的条件语句,这适用于两个条件:
{
accessToken:
process.env.NODE_ENV == "production"
? "ZkIEqD1i8FVF628krYkPhAtt"
: "nroV5bOcaS2CHUosOINLJgtt",
cacheProvider: "memory"
}
但是,如果我需要添加第三个,我不确定如何做到这一点,这是行不通的:
{
accessToken:
process.env.NODE_ENV ==
"staging" ? "TY8ljH8FVyeYAfX0F7Qkfwttstaging"
: "production" ? "ZkIEqD1i8FVF628krYkPhAtt"
: "nroV5bOcaS2CHUosOINLJgtt",
cacheProvider: "memory"
}
您可以简单地添加第三个检查,我建议您添加一个开关案例,这样在您的案例中会更干净。
但是以上问题的答案是
accessToken:
process.env.NODE_ENV == "production"
? "ZkIEqD1i8FVF628krYkPhAtt"
: process.env.NODE_ENV == "staging"?"ZkIEqD1i8FVF628krYkPhAtt":"nroV5bOcaS2CHUosOINLJgtt": "nroV5bOcaS2CHUosOINLJgtt",
cacheProvider: "memory"
}
只需创建一个辅助函数即可完成此工作。。。
function decideFor<K, T>(value: K, options: [condition: K, value: T][]): T | undefined {
return new Map(options).get(value);
}
const options = {
accessToken: decideFor(process.env.NODE_ENV, [
['staging', 'TY8ljH8FVyeYAfX0F7Qkfwttstaging'],
['production', 'ZkIEqD1i8FVF628krYkPhAtt'],
['developement', 'nroV5bOcaS2CHUosOINLJgtt'],
]) || 'invalid NODE_ENV',
// ...
};
在这种情况下,我更喜欢使用查找表将键映射到特定值的方法。
const defaultAccessToken = "nroV5bOcaS2CHUosOINLJgtt";
const envs = {
production: "ZkIEqD1i8FVF628krYkPhAtt",
staging: "TY8ljH8FVyeYAfX0F7Qkfwttstaging",
}
const y = {
accessToken: envs[process.env.NODE_ENV] || defaultAccessToken
}