如何在 Angular 中使用环境变量

介绍

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

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

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

先决条件

如果你想跟随这篇文章,你需要:

本教程已通过 Node v16.2.0、npmv7.15.1 和@angular/corev12.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

源代码/环境/环境.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

添加暂存变量

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

注意:以前,此配置是在.angular-cli.json.

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

angular.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 主题页面以获取练习和编程项目。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁