我如何在客户端代码中设置环境variables?

我需要根据我们是否在开发或生产而设置不同的关键。 在没有固有运行时环境的客户端执行此操作的好方法是什么?

谢谢!

一种方法是从服务器向客户端的全局名称空间注入一个环境variables。

例如,如果你在PHP中这样做:

<script> var env = <?php echo $your_env_variable; ?>; // globally accessible variable </script> 

现在,您可以从该脚本标记之后执行的任何JavaScript文件访问该环境variables。

在节点中,你会做同样的事情,但与模板(例如玉):

 script(type='text/javascript'). var env = passedInEnvVar 

在nodejs中,指定环境的“官方”方法是使用“NODE_ENV”。 由于您没有提到您用于提供HTML内容的框架,因此我将使用expressjs作为我的答案。

你可以简单地在你的视图模板(我正在使用EJS)

  var key = '<%= keys[process.env.NODE_ENV] %>' 

您将需要准备对应于每个环境的一组密钥

 var keys = { 'development': 'dev-key', 'production': 'prod-key' } 

为什么不加载一个不同的脚本? 您可以根据GET参数(例如http://example.org/script.js?development=1)dynamic创build脚本,然后使用服务器端语言(如PHP)根据该参数更改代码的内容&#x3002;

您也可以在您的Web服务器上使用重写规则,使其看起来更干净。

如果我理解正确的话,试试这个:

 if (window.location.protocol === 'file:') { // Development environment } else { // Production environment };