JSON-Konfiguration mit Node.js

Die require-Funktion von Node.js kann JSON-Dateien nativ verarbeiten. Das ermöglicht die Verwaltung aller Konfigurationseinstellungen an einem gemeinsamen Ort.

vorlesen Druckansicht 1 Kommentar lesen
Lesezeit: 3 Min.
Von
  • Golo Roden

Fast jede Webanwendung, die auf Node.js basiert, enthält ein Konstrukt, um den für den Webserver zu verwendenden Port entweder aus der Umgebungsvariable PORT auszulesen oder, falls diese Variable nicht gesetzt wurde, auf einen Standardwert zurückzugreifen.

Der Bootstrapper des weit verbreiteten Webframeworks Express, das von TJ Holowaychuk entwickelt wird, erzeugt dieses Konstrukt automatisch fĂĽr jede Anwendung, indem innerhalb ihres Konfigurationsabschnitts eine entsprechende, anwendungsweit gĂĽltige Eigenschaft definiert wird:

app.configure(function () {
app.set('port', process.env.PORT || 3000);
// ...
});

Auf diese Eigenschaft greift Express dann an entsprechender Stelle zurück, beispielsweise beim Start des Webservers und der Ausgabe der dazugehörigen Erfolgsmeldung:

http.createServer(app).listen(app.get('port'), function () {
console.log('Express server listening on port ' + app.get('port'));
});

Wenn eine Applikation wächst, kommen im Lauf der Zeit weitere Standardwerte für bestimmte Einstellungen hinzu. Denkbar sind hier unter anderem vordefinierte Verbindungszeichenfolgen zu Datenbanken und von der Anwendung zu verwendende Verzeichnisse.

Werden diese Konfigurationseinstellungen ĂĽbersichtlich an einem zentralen Ort verwaltet, verbessert das die Wartbarkeit einer Anwendung. In Node.js bietet sich fĂĽr diesen Zweck die Verwendung einer Datei im JSON-Format an, da dieses verschiedene Vorteile vereint:

  • Verbreitung: JSON ist nahezu jedem Webentwickler bekannt und wird von jeder modernen JavaScript-Laufzeitumgebung nativ verarbeitet.
  • Lesbarkeit: JSON ist nicht nur weitaus kompakter als XML, sondern auch wesentlich angenehmer zu lesen. Das ist vor allem fĂĽr andere, technisch eventuell weniger versierte Zielgruppen als Entwickler hilfreich.
  • Validierbarkeit: JSON kann auf einfache Art gegen ein vordefiniertes Schema validiert werden, beispielsweise mit Amanda.
  • Webbrowser: JSON kann auĂźerdem auch in jedem modernen Webbrowser mit den dort verfĂĽgbaren Funktionen JSON.parse und JSON.stringify verarbeitet werden, sodass sich mit geringem Aufwand Webwerkzeuge zur Verarbeitung von Konfigurationsdateien entwickeln lassen.

FĂĽr Node.js-Entwickler ist JSON als Konfigurationsformat unter anderem auch deshalb interessant, weil die in Node.js enthaltene require-Funktion auĂźer JavaScript- auch JSON-Dateien laden kann.

Um also beispielsweise die in der Datei config.json enthaltene Konfiguration in einer Node.js-Anwendung, verwenden zu können, genügt der folgende Aufruf:

var configuration = require('./config.json');

Danach lässt sich auf das in der Konfigurationsdatei serialisierte JSON-Objekt mithilfe der Variablen configuration zugreifen. Werden in der Datei config.json also die Ports als

{
"ports": {
"http": 80,
"https": 443
}
}

definiert, stehen diese nach dem Laden der Datei unter configuration.ports.http beziehungsweise configuration.ports.https zur VerfĂĽgung.

Selbstverständlich gibt es für Node.js auch spezialisierte Module wie nconf, die unter anderem verschiedene Konfigurationsquellen verarbeiten können. Häufig genügt der hier beschriebene Ansatz jedoch vollkommen, sodass auf ein komplexes, zusätzliches Modul in der Regel guten Gewissens verzichtet werden kann.

tl;dr: Die require-Funktion von Node.js kann JSON-Dateien nativ verarbeiten. Das ermöglicht die Verwaltung aller Konfigurationseinstellungen an einem gemeinsamen Ort. ()