如何在Angular中使用环境变量

来自菜鸟教程
跳转至:导航、​搜索

介绍

如果您正在构建使用 API 的应用程序,您需要在开发期间使用 API 密钥来测试环境,并在生产期间使用 API 密钥来测试实时环境。 在 Angular 中,您可以使用 environment.ts 文件创建环境变量。

注意: 这篇文章适用于 Angular 2+ 应用程序。


在本教程中,您将学习如何在 Angular 中使用环境变量。

先决条件

如果您想继续阅读本文,您将需要:

  • Node.js 的本地开发环境。 关注【X7X】如何安装Node.js并创建本地开发环境【X76X】。

本教程已使用 Node v16.2.0、npm v7.15.1 和 @angular/core v12.0.3 进行了验证。

检测环境

Angular CLI 项目在生产环境中已经使用 production 环境变量来启用生产模式:

src/main.ts

// ...

if (environment.production) {
  enableProdMode();
}

Angular 还为我们提供了一个名为 isDevMode 的实用程序函数,它可以检查应用程序是否在开发模式下运行:

src/app/app.component.ts

import { Component, OnInit, isDevMode } from '@angular/core';

@Component({ ... })
export class AppComponent implements OnInit {
  ngOnInit() {
    if (isDevMode()) {
      console.log('Development!');
    } else {
      console.log('Production!');
    }
  }
}

此示例代码将在开发模式下注销消息 'Development!,并在生产模式下注销消息 Production!

添加开发和生产变量

您还会注意到,默认情况下,在 /src/environment 文件夹中,您有一个用于开发的环境文件和一个用于生产的环境文件。

假设我们想要使用不同的密钥,具体取决于我们是处于开发模式还是生产模式:

对于 environment.ts 中的开发设置:

src/环境/环境.ts

export const environment = {
  production: false,
  apiKey: 'devKey'
};

对于 environment.prod.ts 中的生产设置:

src/environment/environment.prod.ts

export const environment = {
  production: true,
  apiKey: 'prodKey'
};

在我们的组件中,为了访问变量,我们需要做的事情如下:

src/app/app.component.ts

import { Component } from '@angular/core';
import { environment } from '../environments/environment';

Angular 负责将环境文件换成正确的文件。

运行开发模式:

ng serve

apiKey 变量解析为 devKey

运行生产模式:

ng serve --configuration=production

注意: 以前,推荐使用 --prod 选项,但 --configuration=production 已弃用此选项。


apiKey 变量解析为 prodKey

添加暂存变量

通过向 angular.json 文件中的 configurations 字段添加新条目,在 Angular CLI 项目中添加新环境。

注意: 之前这个配置是在.angular-cli.json中设置的。


让我们根据生产使用的配置添加一个暂存环境:

角.json

{
  // ...
  "projects": {
    "angular-environment-example": {
      // ...
      "prefix": "app",
        "build": {
          // ...
          "configurations": {
            "staging": {
              // ...
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.stage.ts"
                }
              ],
              // ...
            },
            // ...
          },
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "configurations": {
            "staging": {
              "browserTarget": "angular-environment-example:build:staging"
            },
          }
        },
      }
    }
  }
}

现在我们可以添加一个暂存环境文件:

src/environments/environment.stage.ts

export const environment = {
  production: true,
  apiKey: 'stagingKey'
};

运行开发模式:

ng serve --configuration=staging

注意: 以前推荐使用 --env=staging 选项,但现在已替换为 --configuration=staging


apiKey 变量将解析为 stagingKey

结论

在本教程中,您学习了如何在 Angular 中使用环境变量。

如果您想了解有关 Angular 的更多信息,请查看 我们的 Angular 主题页面 以获取练习和编程项目。