在AngularJS应用程序中支持多种环境(开发,登台,生产,ci)的传统方法是什么?
对于一个更具体的例子,如何在某个配置中配置(可能需要一个额外的工具)服务器端点,然后读取该服务器端点以供其他地方使用,例如$http.get(server_endpoint+'/rest/api/route'
之类的调用?
答案 0 :(得分:4)
您可以定义角度常量,将其注入所需的服务/控制器并引用特定于环境的值
angular.module('YourApp')
.constant('AppConstants', {
'SERVER_ENDPOINT': 'http://api.example.com',
'SHOW_DEBUG': true
});
您可以使用
$http.get(AppConstants.SERVER_ENDPOINT + '/rest/api/route')
如果您使用Grunt或Gulp,那么您可以根据环境创建一个Angular常量文件。
Grunt示例:
ngconstant: {
options: {
name: 'config',
},
dev: {
options: {
dest: '<%= yeoman.app %>/scripts/config.js'
},
constants: {
ENV: {
FB_APP_ID: '123456'
}
}
},
prod: {
options: {
dest: '<%= yeoman.dist %>/scripts/config.js'
},
constants: {
ENV: {
FB_APP_ID: '98765'
}
}
}
}
创建应用的生产和开发版本的任务分别调用ngconstant:prod
和ngconstant:dev