如何在客户端代码中设置环境变量?

时间:2012-07-30 10:30:21

标签: javascript html html5 node.js

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

谢谢!

3 个答案:

答案 0 :(得分:4)

一种方法是将服务器的环境变量注入客户端的全局命名空间。

例如,如果您在PHP中执行此操作:

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

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

在节点中你会做同样的事情,但是使用模板(例如Jade):

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

答案 1 :(得分:1)

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

您可以在视图模板中执行此操作(我使用的是EJS)

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

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

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

答案 2 :(得分:0)

为什么不加载不同的脚本?您可以根据GET参数动态创建脚本,例如http://example.org/script.js?development=1,然后使用服务器端语言(如PHP)基于该参数更改代码的内容。

您还可以在Web服务器上使用重写规则,使其看起来更清晰。