web-dev-qa-db-fra.com

Quelqu'un utilise-t-il des fichiers de configuration pour javascript?

Nous avons des fichiers javascript qui sont spécifiques à l'environnement, et j'ai donc pensé à suivre le chemin de la création d'une manière générique de lire dans un fichier XML (config) pour stocker différents paramètres spécifiques à l'environnement. J'étais curieux de savoir si quelqu'un d'autre ici fait ça (ou sinon, y a-t-il une raison pour laquelle vous ne le faites pas)?

42

JSON est des centaines de fois plus rapide à consommer que XML, apportez lui-même un objet JavaScript natif. Attachez et oubliez.

MODIFIER:

L'exemple de James Westgate est JSON. Vous pouvez l'utiliser en ligne ou en tant que fichier externe ou même chargé via AJAX.

Voici un autre exemple:

var clientData = {}
clientData.dataset1 = [
    {name:'Dave', age:'41', userid:2345},
    {name:'Vera', age:'32', userid:9856}
]

alert(clientData.dataset1[0].name)

Tout ce que vous avez à faire est de charger un fichier javascript avec quelques définitions de variables, idéalement avec un espace de noms. Vous pouvez utiliser un seul objet littéral pour cela:

var config = {
  option1: 'good;', 
  option2: {name: 'bad'}, 
  option3: ['u','g','l','y']
}

Chargez ensuite ce fichier comme votre premier script et vous aurez accès aux informations de configuration dans chaque script suivant, par exemple

if (config.option1 == 'good') doStuff();
29
James Westgate

Pourquoi ne pas utiliser un fichier js distinct pour stocker vos paramètres spécifiques à l'environnement?

Tout comme vous pouvez utiliser plusieurs fichiers CSS pour styliser votre page, vous pouvez également utiliser plusieurs fichiers js.

Vous pouvez donc créer un fichier appelé app-config.js avec des paramètres spécifiques:

var SiteName = "MyWebsite.com";
var HeaderImage = "http://mycdn.com/images/mywebsite/header.png";

Et puis vous incluez les js sur vos pages comme ceci:

<script type="text/javascript" src="/js/app-config.js"></script>
<script type="text/javascript" src="/js/app.js"></script>
9
Steve Wortham

Une chose que vous pourriez envisager est que les pages elles-mêmes incluent de petits blocs Javascript pour fournir exactement ce type d'informations de configuration. Souvent, vous n'avez vraiment besoin que d'une petite quantité d'informations pour la création d'URL, etc. Je vais donner un exemple JSP:

<script>
  var appConfig = {
    'syndicate': '${environ.syndicate}',
    'urlBase': '${environ.urlBase}'
  };
</script>

Ensuite, votre code Javascript "pur" peut ressembler à window.appConfig pour obtenir des informations critiques. Évidemment, cela deviendrait un gâchis si vous aviez besoin de beaucoup de choses.

Cela est particulièrement facile lorsque vos pages sont créées via un système de modèles dans votre environnement côté serveur. De cette façon, vous n'avez qu'à définir la balise de script en un seul endroit (ou un petit nombre d'emplacements; les modèles en d'autres termes) et toutes les pages l'obtiennent automatiquement.

(édité pour éliminer la déclaration de variable bizarre)

5
Pointy

Vous pouvez facilement dérouler des fichiers XML en utilisant quelque chose comme jquery ( http://think2loud.com/reading-xml-with-jquery/) .

Cependant, je voudrais demander si le code javascript côté client spécifique à l'environnement est vraiment une bonne idée. Il semble que tout environnement spécifique (c.-à-d. Qa, uat, production, je suppose) doit être géré sur le serveur et le client doit être indépendant de l'environnement

0
Joel Martinez

Je recommanderais d'utiliser YCB. Voici un exemple comment l'utiliser: https://github.com/yahoo/ycb/blob/master/examples/simple/app.js

0
Tufan