AngularJS支持多种环境

时间:2015-08-07 15:05:51

标签: angularjs configuration provisioning

在AngularJS应用程序中支持多种环境(开发,登台,生产,ci)的传统方法是什么?

对于一个更具体的例子,如何在某个配置中配置(可能需要一个额外的工具)服务器端点,然后读取该服务器端点以供其他地方使用,例如$http.get(server_endpoint+'/rest/api/route'之类的调用?

1 个答案:

答案 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-ng-constant

gulp-ng-constant

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:prodngconstant:dev