【问题标题】:Where to put frontend javascript configuration variables在哪里放置前端 javascript 配置变量
【发布时间】:2020-03-19 03:49:34
【问题描述】:

我有一个 Javascript 前端,可以对我的后端进行 Ajax 调用。为此,它需要一个我在 Ajax get() 调用中硬编码的“backend_URL”,比如“http://myservice/backend”。

现在,如果我想在不同的机器上部署我的应用程序,其中一些将使用带有 HTTPS 的 URL:“https://myservice/backend”,而另一些则不使用(因为它们缺少适当的证书并且不会暴露有价值的数据)。

我应该将“USE_HTTPS=1”配置变量放在哪里,以便部署应用程序的人可以选择使用或不使用 SSL?当然,这个问题会扩展到其他配置变量。

我曾想过在项目根目录添加一个“.config”文件,但后来我不知道如何在我的代码中导入它。或者我应该导出环境变量?还是 node.js 功能?

【问题讨论】:

  • 客户端代码需要知道这一点,对吧?
  • 创建一个文件 config.js 并编写您的客户端配置。在里面。在读取配置文件之前的标题处导入它。信息。
  • @T.J.Crowder 是的,客户端。服务器端已将 Apache 配置为接收 HTTP 或 HTTPS,但客户端不知道,因此需要提示。
  • @Mohammed Raja 你的意思是我把它放在项目的根目录,并将它添加到我的 index.html 的 中?
  • 在代码部分检查我的 cmets

标签: javascript node.js ssl package config


【解决方案1】:

我最终编写了一个包含内容的 conf.js 文件

window.CONFIG = {
    SOME_CONSTANT: 22,
}

并将其包含在我的 index.html 中的新 <script> 中,然后放在其他脚本之前。 window 不是强制性的,但当我将其称为 window.CONFIG 在其余 javascript 中的任何位置时,它会显示它的来源。

【讨论】:

  • 应该是“SOME_CONSTANT: 22”而不是“SOME_CONSTANT = 22”
【解决方案2】:
CONFIG = (function(){  
var conf_info = {};
conf_info["url"] = 'http://codepen.io/pen/';
return{    
  getValue : function(param){
    return conf_info[param];
  }
}
})();

//some where in different file
document.getElementById("result").innerHTML = CONFIG.getValue('url');

【讨论】:

  • 这有帮助,但它仍然远非可读的配置文件(例如 grunt/gulp 配置或 json,没有代码语义)。如果我要求人们编辑代码,他们不会喜欢它。我应该从该代码中读取 json 吗?