reactjs - React SPA动态环境配置
问题描述
create-react-app
我正在使用并为我的 SPA 的 API 服务器设置 uri 地址从头开始构建 React SPA 应用程序。根据官方文档建议的方法是.env
为这种需求创建环境文件。我正在使用持续交付作为开发工作流程的一部分。部署后,React SPA 应用程序进入一个 Docker 容器,API 进入另一个容器。这些容器部署在单独的服务器中,我不确切知道 API 的 uri 将是什么,因此无法.env
为每个部署创建单独的文件。是否有任何“正确的方法”为我的 SPA 应用程序提供动态配置,以便我可以轻松更改环境参数
SPA 中的 API URI 示例
// api.config.js
export const uriToApi1 = process.env.REACT_APP_API1_URI;
export const uriToApi2 = process.env.REACT_APP_API2_URI;
// in App.js
import { uriToApi1, uriToApi2 } from '../components/config/api.config.js';
/* More code */
<DataForm apiDataUri={`${uriToApi1}/BasicService/GetData`} />
/* More code */
<DataForm apiDataUri={`${uriToApi2}/ComplexService/UpdateData`} />
解决方案
假设您在某个dist
文件夹中构建前端代码,该文件夹将由 Docker 在映像中打包。您需要config
在项目中创建文件夹,该文件夹也将添加到dist
文件夹中(很明显,将打包在 Docker 映像中)。在此文件夹中,您将存储一些配置文件以及一些特定于服务器的数据。当你的 react 应用程序启动时,你需要加载这些文件。
流程将是这样的:
- 用户打开您的应用程序。
- 您的应用程序显示一些加载程序并获取配置文件(例如
./config/api-config.json
) - 然后您的应用程序会读取此配置并继续其工作。
您需要Volumes
在 Docker 配置文件中设置 Docker,并将config
Docker 容器中的config
文件夹与服务器上的某个文件夹连接。然后,您将能够用服务器上的文件替换 docker 容器中的配置文件。这将帮助您覆盖每台服务器上的配置。
推荐阅读
- junit4 - SpringBoot 2.5.2 和单元测试
- android - 如何从自定义改造异常处理程序中提取(成功)响应主体
- swift - Facebook SDK App 事件不会在 iOS 14+ 的事件管理器中记录事件
- vb.net - 查询特定时期
- javascript - Javascript过滤空值或函数修复的最佳方法
- amazon-web-services - 当我使用作业胶水时,Amazon S3 中的数据是否会在公共互联网上传输?
- python - 使用 python magic 进行文件验证的问题
- arrays - 地址簿 / 数组,无法工作 / Jaca 脚本
- pandas - 使用 openpyxl 时写入 excel 的 Pandas 会发出警告
- python - Plotly:如何使用 For 循环为数据框中的每个变量创建散点图?