我对ReactJS很新,我可能认为完全错了。在我们的反应应用程序中,我向后端进行了大量的AJAX调用。例如,在开发中我调用http://localhost:3000,在生产中我(自然地)使用另一个主机,它根据安装而改变。
主机是静态的,设置一次,永不改变。
如何在React中管理主机信息?
我读到了关于redux / flux等来存储全局变量,但这对我们来说太过分了。我们只需要有一个字符串(URL / host-info),我们可以用另一个字符串替换它们。我们可以将信息存储在文件中,作为命令行参数或其他任何内容。我们只需要它很简单。
更新:结果我完全不理解构建系统。 Dan指出我们使用webpack打包解决方案。使用加载器,我们可以在代码中交换配置设置。我们最终使用了一个简单的字符串替换加载器(string-replace-webpack-plugin),因为env变量不适合这个解决方案。
答案 0 :(得分:1)
您所描述的内容通常称为环境变量。通常,您为应用程序开发或运行的每个上下文维护一组特定的环境变量。
例如,您可能有一个APP_HOST
环境变量,在本地计算机上设置的变量与在服务器上设置的变量不同。
在服务器上运行的大多数程序都可以直接读取环境变量,但由于React应用程序在客户端的浏览器中运行,因此您必须让它们在服务之前了解相应的环境变量。
最简单的方法是使用envify。
Envify允许您从前端代码中引用环境变量。
// app.js
const host = process.env.APP_HOST;
fetch(host);
Envify是一个Browserify转换,意味着您需要通过这样的命令运行代码。
# define some environment variables
APP_HOST="localhost:3000"
# build the code
browserify app.js -t envify -o bundle.js
另一方面会出现:
// bundle.js
var host = "localhost:3000";
fetch(host);
如果您使用Webpack,则有envify-loader形式的类似替代方案。