我对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()是异步的。虽然加载该数据的时间量最小,但它确实创建了一个场景,用户可以在完成加载主机名值之前单击页面上的链接。
我只是想知道处理这个问题的最佳方法是什么?如何确保此值始终可用?
到目前为止,我的一个想法是使用会话令牌,因为它已经是请求/响应机制的一部分,并且始终可用。由于它将是一个签名令牌,因此它的值将是安全的,因此有人无法恶意更改这些值。
但这听起来有点像黑客解决方案。所以,我想知道是否有人知道更好,更优雅的方式去做吗?
感谢。
答案 0 :(得分:1)
我经常使用的方法是从后端导入变量。
例如,如果您使用PHP,则可以echo
输出变量。
您可以在<script>
中放置以下<head>
,CONFIG
随处可用。
<script>
var CONFIG = {
host: "<?php echo $host; ?>",
otherConfig: "<?php echo $otherConfig; ?>"
};
</script>