Folosește cineva fișiere de configurare pentru javascript? (Programare, Javascript, Xml, Configurare)

Justin Helgerson a intrebat.

Avem fișiere javascript care sunt specifice mediului, așa că mă gândeam să merg pe calea creării unei modalități generice de a citi un fișier XML (config) pentru a stoca diferite setări specifice mediului. Am fost curios să știu dacă mai face cineva de aici acest lucru (sau dacă nu, există un motiv pentru care nu o face)?

Comentarii

    24

  • XML bleccch! Aveți la dispoziție JSON! –  > Por Pointy.
6 răspunsuri
Diodeus – James MacFarlane

JSON este de sute de ori mai rapid de consumat decât XML, aduce un obiect JavaScript nativ în sine. Atașați și uitați.

EDIT:

Exemplul lui James Westgate este JSON. Puteți folosi acest lucru inline sau ca fișier extern sau chiar încărcat prin AJAX.

Iată un alt exemplu:

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

alert(clientData.dataset1[0].name)

Comentarii

  • De fapt, exemplul meu nu este un JSON valid și nici al tău nu este. În exemplul meu nu este destinat să fie încărcat prin ajax- încărcat direct ca fișier script este mai eficient. Dacă ar fi fost preluat de la un apel API prin ajax, atunci ar fi fost o altă problemă. –  > Por James Westgate.
  • Pentru a evita utilizarea de nume lungi, vă sugerez să folosiți ceva de genul var data = clientData.dataset1 în cadrul unei funcții care poate avea nevoie de multe dintre aceste variabile. –  > Por kon psych.
James Westgate

Tot ceea ce trebuie să faceți este să încărcați un fișier javascript cu câteva definiții de variabile, în mod ideal cu nume. Puteți utiliza un singur obiect literal pentru acest lucru:

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

Apoi, încărcați acel fișier ca primul script și veți avea acces la informațiile de configurare în fiecare script ulterior, de ex.

if (config.option1 == 'good') doStuff();

Comentarii

  • prefixați variabila cu o funcție sau o altă variabilă pentru a-i da mai multă semnificație/ context, de exemplu config.option1 în loc de doar option1 –  > Por James Westgate.
Steve Wortham

De ce nu folosiți un fișier js separat pentru a stoca setările specifice mediului?

La fel cum puteți utiliza mai multe fișiere CSS pentru a vă stiliza pagina, puteți utiliza și mai multe fișiere js.

Astfel, ați putea crea un fișier numit app-config.js cu setări specifice:

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

Și apoi să includeți fișierul js în paginile dvs., astfel:

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

Pointy

Un lucru pe care l-ați putea lua în considerare este ca paginile însele să includă mici blocuri Javascript pentru a furniza exact acest tip de informații de configurare. De multe ori, aveți într-adevăr nevoie doar de o cantitate mică de informații pentru construirea URL-urilor etc. Voi da un exemplu JSP:

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

Apoi, codul Javascript „pur” poate arăta astfel window.appConfig pentru a obține informații esențiale. Evident, acest lucru ar deveni un dezastru dacă ați avea nevoie de o mulțime de lucruri.

Acest lucru este deosebit de ușor atunci când paginile dvs. sunt construite prin intermediul unui sistem de șabloane în mediul dvs. server-side. În acest fel, trebuie doar să setați tag-ul script într-un singur loc (sau într-un număr mic de locuri; cu alte cuvinte, în șabloane) și toate paginile îl primesc automat.

(editat pentru a elimina declarația ciudată a variabilelor)

Joel Martinez

Puteți extrage cu ușurință fișiere XML folosind ceva de genul jquery (http://think2loud.com/reading-xml-with-jquery/).

Cu toate acestea, aș dori să vă întreb dacă codul javascript specific mediului de pe partea clientului este într-adevăr o idee bună. Se pare că orice mediu specific (adică qa, uat, producție, presupun) ar trebui să fie gestionat pe server, iar clientul ar trebui să fie agnostic mediului

Comentarii

  • În prezent, este vorba despre un apel AJAX specific mediului. URL-ul va fi diferit în funcție de mediu, deoarece diferitele noastre aplicații web au un URL diferit în funcție de mediu. Presupun că, cu această mică variație, calea pe care o urmez ar putea fi exagerată, dar a fost ceva ce am vrut să explorez. –  > Por Justin Helgerson.
Tufan

Aș recomanda să folosiți YCB. Iată un exemplu de utilizare a acestuia: https://github.com/yahoo/ycb/blob/master/examples/simple/app.js

Comentarii

  • Deși acest link poate răspunde la întrebare, este mai bine să includeți aici părțile esențiale ale răspunsului și să furnizați link-ul pentru referință. Răspunsurile bazate doar pe linkuri pot deveni invalide dacă se schimbă pagina legată. –  > Por ZygD.