ReactJS:存储非常简单的设置/常量

时间:2016-03-18 16:34:03

标签: reactjs

我对ReactJS很新,我可能认为完全错了。在我们的反应应用程序中,我向后端进行了大量的AJAX调用。例如,在开发中我调用http://localhost:3000,在生产中我(自然地)使用另一个主机,它根据安装而改变。

主机是静态的,设置一次,永不改变。

如何在React中管理主机信息?

我读到了关于redux / flux等来存储全局变量,但这对我们来说太过分了。我们只需要有一个字符串(URL / host-info),我们可以用另一个字符串替换它们。我们可以将信息存储在文件中,作为命令行参数或其他任何内容。我们只需要它很简单。

更新:结果我完全不理解构建系统。 Dan指出我们使用webpack打包解决方案。使用加载器,我们可以在代码中交换配置设置。我们最终使用了一个简单的字符串替换加载器(string-replace-webpack-plugin),因为env变量不适合这个解决方案。

1 个答案:

答案 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形式的类似替代方案。