AngularJS支持多种环境

AngularJS support multiple environments

在 AngularJS 应用程序中支持多个环境(开发、暂存、生产,ci)的常规方法是什么?

举一个更具体的例子,如何在某处的配置中配置(可能需要额外的工具)服务器端点,然后读取该服务器端点以供其他地方使用,例如像 [=11= 这样的调用]?

您可以定义一个 Angular 常量,将其注入所需的 service/controller 并引用特定于环境的值

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