2013-08-27 5 views
11

Vedo più modi per creare file di configurazione in Node.js. Uno usa module.exports nel file js, si usa solo un oggetto json normale.Module.exports vs plain json per i file di configurazione

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

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

Ci sono dei vantaggi nell'uso di module.exports nel file di configurazione? Quali sono le differenze?

Grazie

+1

l'unica vera differenza è che non è possibile aggiungere commenti nei file JSON. potresti essere interessato ad usare un file rc se vuoi un file JSON con commenti. –

+0

Grazie Jonathan, ho notato che module.exports sarà valido solo nel file * .js e che l'oggetto json è valido solo nel file * .json. Potrei inserire commenti usando module.exports nel file * .js. –

+0

Un'altra nota importante è che un file .json effettivo ha una sintassi più rigida, ad esempio le chiavi devono essere racchiuse tra virgolette doppie, non è possibile avere una virgola alla fine di una serie di elementi, ecc. –

risposta

19

CommonJS javascript Modulo

  • commenti
  • condizionali
  • loop e tali per popolare default
  • codice per modificare config sulla base di NODE_ENV o simile codice
  • a cercare per esterni file per chiavi SSL, credenziali API, ecc.
  • più facile avere fallback e le impostazioni predefinite

di file JSON

  • facile da analizzare e l'aggiornamento con strumenti esterni
  • compatibile con praticamente ogni linguaggio di programmazione là fuori
  • dati puri che possono essere caricati senza essere eseguito
  • facile alla bella stampa
  • JSON potrebbe iniziare come base e tutto il codice SME descritto sopra a proposito del modulo CommonJS potrebbe vivere in un modulo config.js che legge config.json come è punto di partenza

Così ho sempre iniziare con un modulo commonjs per la comodità, ma tenere qualsiasi logica in là semplice. Se il tuo config.js ha dei bug e necessita di test, probabilmente è troppo complicato. BACIO. Se so per certo che altre cose vorranno curiosare nella mia configurazione, userò un file JSON.

+0

grazie a @peter. Proverò il modulo CommonJS. –

7

grazie @ jonathan-ong, si presenta come config.js (NON di file JSON) funziona come previsto e ho potuto mettere alcuni commenti.

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

Ehi, grazie per mettendo questo esempio qui :) – VilleKoo

0

I file js hanno i loro vantaggi come @Peter Lyons menzionato. Ma se non devo accedere a risorse esterne per chiavi API e così via, preferisco lo JSON per i file di configurazione.

Il motivo semplice è Non avrei dovuto toccare il mio codice solo per il gusto di apportare modifiche ai file di configurazione. Posso semplicemente creare un'API per modificare questi file JSON per aggiungere, aggiornare o rimuovere qualsiasi coppia chiave-valore di configurazione. Anche aggiungere un intero nuovo file di configurazione per un ambiente separato utilizzando un'API.

E modulo uso config di consumare queste configurazioni