JavaScript:在页面初始化时加载应用程序环境变量的最佳方法是什么?

时间:2016-09-25 14:45:37

标签: javascript jquery json

我对JavaScript比较陌生。我尝试做的一件事是能够拥有某些环境变量,特别是主机名。在开发中,它将是localhost。在生产中,它将完全不同。

我已经看到如何使用JSON文件加载值,如下所示:

value.json

{
    "myVal": "production"
}

JQuery $ .getJSON()(创建具有不可变字段的对象的IIFE函数的一部分)

$.getJSON("value.json", function(data){
    myVal = data.myVal; //Not globally assigned, assigned to field in enclosing function
    console.log(data.myVal);
});

问题是getJSON()是异步的。虽然加载该数据的时间量最小,但它确实创建了一个场景,用户可以在完成加载主机名值之前单击页面上的链接。

我只是想知道处理这个问题的最佳方法是什么?如何确保此值始终可用?

到目前为止,我的一个想法是使用会话令牌,因为它已经是请求/响应机制的一部分,并且始终可用。由于它将是一个签名令牌,因此它的值将是安全的,因此有人无法恶意更改这些值。

但这听起来有点像黑客解决方案。所以,我想知道是否有人知道更好,更优雅的方式去做吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我经常使用的方法是从后端导入变量。 例如,如果您使用PHP,则可以echo输出变量。 您可以在<script>中放置以下<head>CONFIG随处可用。

<script>
var CONFIG = {
  host: "<?php echo $host; ?>",
  otherConfig: "<?php echo $otherConfig; ?>"
};
</script>