【发布时间】:2020-02-18 12:03:07
【问题描述】:
我有一个案例,我必须能够为两个不同的服务器部署我的 Angular 6 项目,每个服务器都有稍微不同的 API、用户处理等。 出于这个原因,我以服务的形式添加了不同的抽象层,以保持与其余代码的接口相同。
因为文件将具有完全不同的内容,我想在单独的文件中编写单独的服务,并仅将一组服务设置为“活动”,例如获取数据、处理用户等。
app/
├── core/
│ ├── Server1.user.service.ts
│ ├── Server2.user.service.ts
│ ├── Server1.data.service.ts
│ ├── Server2.data.service.ts
│ └── ...
├── components/
│ ├── ...
│ └── ...
└── ...
我想要避免的是在我的代码中有很多if (deployedForServer1) {...},因为这很难维护并且很难保持概述。
现在我不确定,实现这一点的最佳方法是什么。
我的第一种方法是用 angular.json 中的“fileReplacements”替换服务。这样做的好处是只部署我需要的代码,但会导致相当复杂的 angular.json 配置。
另一种方法是通过环境变量处理它,但在这里我不确定是否可以避免在我的代码中出现多个类似if (deployedForServer1) {...} 的查询。
我的意思不是要以意见来回答这个问题,而是要提供这些方法中的一种方法是否存在根本错误或我现在没有看到的任何严重缺点的信息。
【问题讨论】:
标签: angular environment-variables