我如何在客户端代码中设置环境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)根据该参数更改代码的内容。
您也可以在您的Web服务器上使用重写规则,使其看起来更干净。
如果我理解正确的话,试试这个:
if (window.location.protocol === 'file:') { // Development environment } else { // Production environment };