2016-04-28 16 views
3

Ich habe ein Javascript-Frontend, das Ajax Aufrufe an mein Backend tut. Um das zu tun, benötigt es eine "backend_URL", die ich im Ajax get() - Aufruf fest codiere, sagen wir "http://myservice/backend".Wo Frontend Javascript Konfigurationsvariablen setzen

Jetzt, wenn ich meine Anwendung auf verschiedenen Rechnern bereitstellen möchte, verwenden einige dieser URL mit HTTPS: "https://myservice/backend", und einige nicht (weil sie ein richtiges Zertifikat fehlt und keine wertvollen Daten verfügbar).

Wo sollte ich die Konfigurationsvariable "USE_HTTPS = 1" setzen, damit jemand, der die App bereitstellt, SSL verwenden kann oder nicht? Natürlich erstreckt sich die Frage auf andere Konfigurationsvariablen.

Ich dachte über das Hinzufügen einer ".config" -Datei im Projektstamm, aber dann weiß ich nicht, wie ich es in meinen Code importieren. Oder sollte ich Umgebungsvariablen exportieren? Oder eine Funktion von node.js?

+0

Es ist der ** clientseitige ** Code, der das wissen muss, oder? –

+0

Erstellen Sie eine Datei config.js und schreiben Sie Ihre clientseitige Konfiguration. drin. Importieren Sie es in Header vor der Datei, die Config lesen. Info. –

+0

@ T.J.Crowder Ja, die Client-Seite. Die Serverseite hat Apache konfiguriert, um entweder HTTP oder HTTPS zu empfangen, aber der Client weiß nichts darüber, also braucht es einen Hinweis. – JulienD

Antwort

2

Ich landete eine mit Inhalt conf.js Datei zu schreiben

window.CONFIG = { 
    SOME_CONSTANT = 22, 
} 

und enthalten in einer neuen <script> in meinem index.html vor den anderen Skripten. Die window ist nicht obligatorisch, aber zeigt, woher es kommt, wenn ich das als window.CONFIG irgendwo im Rest des Javascript nenne.

1
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'); 
+0

Das hilft, aber es ist immer noch weit von einer lesbaren Konfigurationsdatei (wie eine Grunt/Gulp-Konfiguration oder ein JSON zum Beispiel ohne Codesemantik). Wenn ich die Leute frage, den Code zu bearbeiten, werden sie das nicht mögen. Sollte ich einen JSON von diesem Code lesen? – JulienD