我需要根据我们是在开发还是生产中设置不同的密钥。在没有固有运行时环境的客户端执行此操作的好方法是什么?
谢谢!
答案 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服务器上使用重写规则,使其看起来更清晰。