2013-08-27 5 views
11

Ich sehe mehrere Möglichkeiten zum Erstellen von Konfigurationsdateien in Node.js. Man verwendet module.exports in der js-Datei, man benutzt einfach ein json-Objekt.Module.exports vs Plain Json für Konfigurationsdateien

// config1.js 
module.exports = { 
    config_1: "value 1", 
    config_2: "value 2" 
} 

// config2.json 
{ 
    config_1: "value 1", 
    config_2: "value 2" 
} 

Gibt es irgendwelche Vorteile der Verwendung von module.exports in der Konfigurationsdatei? Was sind die Unterschiede? wie erwartet funktioniert

Dank

+1

der einzige wirkliche Unterschied ist, dass Sie nicht Kommentare in JSON-Dateien hinzufügen können. Sie könnten daran interessiert sein, eine RC-Datei zu verwenden, wenn Sie eine JSON-Datei mit Kommentaren möchten. –

+0

Dank Jonathan, habe ich festgestellt, dass module.exports nur in * .js Datei gültig und für Json-Objekt nur gültig in * .json Datei. Ich könnte Kommentar mit module.exports in * .js Datei setzen. –

+0

Ein weiterer wichtiger Hinweis ist, dass eine tatsächliche .json-Datei strengere Syntax hat, zum Beispiel müssen Schlüssel in Anführungszeichen eingeschlossen werden, Sie können kein Komma am Ende eines Arrays von Elementen usw. haben. –

Antwort

19

Javascript Commonjs Modul

  • Kommentare
  • conditionals
  • Loops und so auf die Standardwerte bevölkern
  • Code Config ändern basierend auf NODE_ENV oder ähnliche
  • Code für externe aussehen Dateien für SSL-Schlüssel, API-Berechtigungsnachweise usw.
  • leichter haben Fallbacks und Standardwerte

JSON-Datei

  • leicht zu analysieren und zu aktualisieren mit externen Tools
  • kompatibel mit so ziemlich jeder Programmiersprache gibt
  • reine Daten, die geladen werden können ohne ausgeführt zu werden
  • einfach zu hübsch drucken
  • JSON konnte als die Basis und den ganzen Code es beginnen ems oben beschrieben über Commonjs Modul in einem Modul, das config.js config.json liest leben könnte, wie es Punkt fängt

Also immer ich mit einem Commonjs Modul für die Bequemlichkeit zu starten, aber jede Logik halten dort einfach. Wenn Ihre config.js Fehler hat und Tests benötigt, ist es wahrscheinlich zu kompliziert. KUSS. Wenn ich weiß, dass andere Dinge in meiner Konfiguration stöbern wollen, verwende ich eine JSON-Datei.

+0

danke @peter. Ich werde CommonJS-Modul versuchen. –

7

Thanks @ jonathan-Ong, sieht aus wie config.js (NICHT JSON-Datei) und ich konnte einige Kommentare setzen.

module.exports = { 

    // Development Environment 

    development: { 
    database: { 
     host: '127.0.0.1', 
     login: 'dev', 
     password: 'dev' 
    } 
    }, 

    // Production Environment 

    production: { 
    database: { 
     host: '127.0.0.1', 
     login: 'prod', 
     password: 'prod' 
    } 
    } 
}; 
+0

Hey, danke für setze dieses Beispiel hier :) – VilleKoo

0

js Dateien haben ihre eigenen Vergünstigungen als @Peter Lyons erwähnt. Aber wenn ich nicht auf externe Ressourcen für API-Schlüssel usw. zugreifen muss, würde ich JSON für Konfigurationsdateien bevorzugen.

Einfacher Grund ist Ich würde meinen Code nicht nur für Änderungen an Konfigurationsdateien berühren müssen. Ich kann einfach eine API zum Bearbeiten dieser JSON-Dateien erstellen, um ein Konfigurationsschlüssel-Wert-Paar hinzuzufügen, zu aktualisieren oder zu entfernen. Fügen Sie sogar eine neue Konfigurationsdatei für eine separate Umgebung mithilfe einer API hinzu.

Und Verwendung Konfigurationsmodul, um diese Konfigurationen zu verbrauchen