web-dev-qa-db-fra.com

Module.exports vs plain json pour les fichiers de configuration

Je vois plusieurs façons de créer des fichiers de configuration dans Node.js. On utilise module.exports dans le fichier js, on utilise simplement un objet json simple.

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

Y a-t-il des avantages à utiliser module.exports dans un fichier de configuration? Quelles sont les différences?

16
Nam Nguyen

javascript CommonJS Module

  • commentaires
  • conditionnels
  • boucles et autres pour renseigner les valeurs par défaut
  • code pour changer la configuration basée sur NODE_ENV ou similaire
  • code pour rechercher des fichiers externes pour les clés SSL, les informations d'identification de l'API, etc.
  • plus facile d'avoir des replis et des défauts

Fichier JSON

  • facile à analyser et mettre à jour avec des outils externes
  • compatible avec à peu près tous les langages de programmation là-bas
  • données pures pouvant être chargées sans être exécutées
  • facile à jolie impression
  • JSON peut démarrer comme base et tous les éléments de code décrits ci-dessus à propos du module CommonJS peuvent résider dans un module config.js qui lit config.json comme point de départ.

Je commence donc toujours par un module commonjs pour plus de commodité, mais toute logique est simple. Si votre config.js a des bogues et a besoin de tests, c'est probablement trop compliqué. BAISER. Si je sais pertinemment que d'autres choses vont vouloir fouiller dans ma configuration, j'utiliserai un fichier JSON.

24
Peter Lyons

Merci @ Jonathan-ong, ressemble à config.js ( fichier JSON PAS ) fonctionne comme prévu et je pourrais mettre quelques commentaires. 

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'
    }
  }
};
10
Nam Nguyen

les fichiers js ont leurs propres avantages, comme l'a mentionné @Peter Lyons. Mais si je n'ai pas à accéder à des ressources externes pour les clés d'API, etc., je préféreraisJSONpour les fichiers de configuration. 

La raison simple en est Je n’aurais pas besoin de toucher mon code pour apporter des modifications aux fichiers de configuration . Je peux simplement faire une API pour éditer ces fichiers JSON pour ajouter, mettre à jour ou supprimer toute paire configuration-clé Ajoutez même un nouveau fichier de configuration pour un environnement séparé à l'aide d'une API. 

Et utilisez le module de configuration pour utiliser ces configurations

0
TGW