这很愚蠢,我知道 - 每当我改变环境时,我都会注释掉我应用程序的配置工厂。必须有更好的方法,有吗?
我虽然检查了网址,但这似乎是一种不好的做法。我想到的另一个选择是在构建过程中使用某种gulp NPM - 但是开发没有构建过程。
angular.module('myApp.services')
.factory('GemsConfig', function () {
return {
//apiServer: "http://localhost:3000/v2/",
//apiServer: "https://staging.gems.org/v2/",
apiServer: "https://api.gems.org/v2/",
//giphyServer: "http://api.giphy.com/v1/gifs/",
giphyServer: "https://api.giphy.com/v1/gifs/",
TTL: 5000,
OS: 'web',
version: '1.1',
apiVer: '2.0',
checkBalanceEveryXSeconds: 600,
//giphyKey: 'xxx', // testing
giphyKey: 'xxxx'
};
})
答案 0 :(得分:0)
为生产创建两个配置,为开发创建一个。并创建一个变量,它可以有两个值“生产”或“开发”。基于此变量调用您的配置。这样你只需要改变变量的名称。
例如
angular.module('myApp.services')
.factory('GemsConfig', function () {
var currentEnv = "production";
var config = {
development :{
apiServer: "https://api.gems.org/v2/",
giphyServer: "https://api.giphy.com/v1/gifs/",
TTL: 5000,
OS: 'web',
version: '1.1',
apiVer: '2.0',
checkBalanceEveryXSeconds: 600,
giphyKey: 'xxxx'
},
production :{
apiServer: "https://api.gems.org/v2/",
giphyServer: "https://api.giphy.com/v1/gifs/",
TTL: 5000,
OS: 'web',
version: '1.1',
apiVer: '2.0',
checkBalanceEveryXSeconds: 600,
giphyKey: 'xxxx'
}
};
return config[currentEnv];
})
修改强>
或更好的解决方案:创建三个配置 1)常见 2)生产 3)发展
您可以将常用配置参数保留在“常用”公共配置中,也可以在“生产”或“开发”中覆盖它们。至少你必须合并你的“当前环境” - (生产或开发)配置和“通用”配置。为此,您可以使用 angular.extend 函数。
EG。
angular.module('myApp.services')
.factory('GemsConfig', function () {
var currentEnv = "production";
var config = {
common:{
TTL: 5000,
OS: 'web',
version: '1.1',
apiVer: '2.0',
checkBalanceEveryXSeconds: 600,
giphyKey: 'xxxxx'
},
development :{
apiServer: "https://api.gems.org/v2/",
giphyServer: "https://api.giphy.com/v1/gifs/",
},
production :{
apiServer: "https://api.gems.org/v2/",
giphyServer: "https://api.giphy.com/v1/gifs/",
TTL:800,
}
};
return angular.extend(config['common'],config[currentEnv]);
});