2012-07-30 74 views
5

我需要根据开发或生产情况设置不同的密钥。在没有固有运行时环境的客户端执行此操作的好方法是什么?如何在客户端代码中设置环境变量?

谢谢!

+2

键你有没有使用考虑构建脚本?当你最小化你的代码时,你也将变量值从开发交换到生产。 – 2012-07-30 10:43:59

+0

通过“没有固有的运行时环境”,你是否也意味着它可能在解释器shell中执行而不是在网站上部署? – bchurchill 2012-07-30 11:25:33

+0

@ChristoferEliasson我认为这可能是最好的路线,谢谢你的建议。 – fancy 2012-07-30 11:47:59

回答

0

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

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

-1

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

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

如果你在本地主机上工作,这将不会工作 – borisdiakur 2014-08-07 12:33:22

4

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

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

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

现在你可以从是脚本标签后执行的任何JavaScript文件访问环境变量。

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

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

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

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

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

您需要准备一组对应于每个环境

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