将 .NET Core 环境传递给 React.JS 应用程序

Passing .NET Core Environment to React.JS app

使用 .NET Core,在 Startup.cs 中您可以访问 IHostingEnvironment,您可以从中获取与服务器上设置的 ASPNETCORE_ENVIRONMENT 环境变量值相对应的 EnvironmentName。这对于切换各种功能 on/off 以及使用特定于环境的配置非常有用。但是对于一个全 React.JS 的前端,有没有办法将这个值传递下来,以便前端也知道它的环境?我可以想到一些可能的方法,但它们看起来有点老套。这方面的最佳做法是什么?

当您呈现将托管您的 React 应用程序的页面时,将环境变量添加为隐藏字段,例如

@page
@inject Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnv

<input id="hostingEnv" 
       type="hidden" 
       value=@hostingEnv.EnvironmentName />

<div id="appRoot"></div>

可以找到有关 IHostingEnvironment 的更多信息 here

然后您可以使用以下代码在您的 React 应用程序中访问该隐藏变量的值:

const hostingEnv = document.getElementById('hostingEnv').value

至于这是否"best practice",没有最好的做法只有好的做法!然而,这种方法对我有用,尽管正如评论者所建议的那样,当然还有其他方法可以做到这一点(例如通过单独的网络请求)。