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

标签 javascript jquery json

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

我已经了解了如何使用 JSON 文件来加载值,如下所示:

值.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() 是异步的。虽然加载该数据的时间很短,但它确实创建了一种情况,即用户可能在完成加载主机名值之前单击页面上的链接。

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

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

但这听起来有点像一个黑客解决方案。所以我想知道是否有更好、更优雅的方法来实现它?

最佳答案

我经常使用的一种方法是从后端导入变量。 例如,如果您使用 PHP,您可以只是 echo出变量。 您可以放置​​以下 <script>在你的<head>CONFIG将随处可见。

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

关于JavaScript:在页面初始化时加载应用程序环境变量的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39688135/

相关文章:

javascript - 覆盖主题响应

javascript - jQuery 和 AngularJS 不能一起工作

javascript - JSON 到对象数组格式

ios - 如何快速将本地 JSON 文件加载到 uitableview 中?

python - 为什么 `json.dump()` 不以 `\n` 结束该行?

javascript - Angular Translate 在 App.Config 中设置变量

javascript - Materialise CSS - Select 在 DOM 中没有名称或正确的值

javascript - 自定义 Google map 标记

javascript - 为什么 Iron-Router onBeforeAction 逻辑不影响 DOM?

javascript - 使用 jQuery 加载基于 <label> 内容的图标