您已经使用CreateReactApp[1]脚手架搭建了一个React应用,现在是部署的时候了。通常使用npmrunbuild或yarnbuild来构建静态资源,这些资源由Web服务器托管。你会体验到:多种环境:test、staging、prod,它们都是独立的服务器,不同的主机名,需要打包不同的包。或者你可以手动写if/else来配置不同环境下后端API的基地址:api-config.jsletbackendHost;constapiVersion='v1';consthostname=window&&window.location&&window.location.hostname;if(hostname==='realsite.com'){backendHost='https://api.realsite.com';}elseif(hostname==='staging.realsite.com'){backendHost='https://staging.api.realsite.com';}elseif(/^qa/.test(hostname)){backendHost=https://api.${hostname};}else{backendHost=process.env.REACT_APP_BACKEND_HOST||'http://localhost:8080';}exportconstAPI_ROOT=${backendHost}/api/${apiVersion};然后在你的应用程序文件api.js中,导入这个配置import{API_ROOT}from'./api-config'functiongetUsers(){returnfetch('${API_ROOT}/users').then(res=>res.josn).then(json=>json.data.users)}毕竟不够优雅。React工程:通过环境变量灵活配置react构建时编织变量的概念需要提醒的是,环境变量是在构建阶段编织的。一旦构建过程完成,前端训练构建输出中的变量值就固定了。(无论输出放在哪个服务进程或环境中)。毕竟,React应用程序作为静态资源运行在浏览器上,但是对于浏览器来说,环境变量就没有意义了。情况1。通过环境变量配置后端基地址。CreateReactAPP脚手架创建一个react应用,环境变量可以通过全局process.env获取。1.process.env.NODE_ENV在构建时设置为生产环境。2、也可以使用REACT_APP_开头的环境变量来配置processes.env。因此,REACT_APP_API_HOST=example.comyarnrunbuild会产生如下效果:process.env.REACT_APP_API_HOST="example.com"process.env.NODE_ENV="production"如何设置环境变量?windows:set/setx命令;linux:export命令,这里不赘述。Case2.env文件临时环境变量可以影响全局process.env的下层变量值,但是不够方便。CreateReactApp支持使用.env文件存放环境变量值_web前端训练。创建一个包含以下内容的.env文件;REACT_APP_SPECIAL_FEATURE=trueREACT_APP_API_HOST=default-host.com以上环境变量会在打包后的开发、测试和生产中生效。如果要为不同的环境设置变量,可以放置.env.development、env.test、.env.production文件。再次提醒:环境变量不仅可以用来配置后端基地址,还可以灵活的作为reactapp的业务配置。文章来自dotNET跨平台
