2010-05-05 29 views
40

Tenemos archivos javascript que son específicos del entorno, por lo que estaba pensando en seguir el camino de crear una forma genérica de leer en un archivo XML (config) para almacenar diferentes configuraciones específicas del entorno. Tenía curiosidad por saber si alguien más aquí hace eso (o si no, ¿hay algún motivo por el que no lo haga)?¿Alguien usa archivos de configuración para javascript?

+22

XML bleccch! ¡Tienes JSON disponible! – Pointy

Respuesta

24

JSON es cientos de veces más rápido de consumir que XML, traiga un objeto JavaScript nativo. Adjunte y olvide.

EDITAR:

El ejemplo de James Westgate es JSON. Puede usar esto en línea o como un archivo externo o incluso cargado a través de AJAX.

He aquí otro ejemplo:

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

alert(clientData.dataset1[0].name) 
+10

esto no es JSON válido. – Jason

+0

Edición descuidada. Lo siento. –

+0

En realidad, mi ejemplo no es JSON válido, y tampoco es tuyo. En mi ejemplo, no está destinado a cargarse directamente a través de ajax, ya que un archivo de script es más eficiente. Si se recuperara de una llamada API a través de ajax, eso sería una cuestión diferente. –

0

Puede tirar fácilmente archivos XML abajo usando algo como jQuery (http://think2loud.com/reading-xml-with-jquery/).

Sin embargo, me gustaría plantear si el ambiente específico del lado del cliente código javascript es realmente una buena idea. Parece como cualquier entorno específico (es decir, qa, uat, producción supongo) debe manejarse en el servidor y el cliente debe ser independiente del entorno

+0

Actualmente es para una llamada AJAX específica del entorno. La URL será diferente según el entorno, ya que nuestras diferentes aplicaciones web tienen una URL diferente según el entorno. Supongo que con esta pequeña variación, el camino que seguiré podría ser excesivo, pero era algo que quería explorar. –

29

Todo lo que necesita hacer es cargar un archivo JavaScript con algunas definiciones de variables, a ser posible de espacios de nombres. Se puede utilizar un único objeto literal para esto:

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

luego cargar ese archivo como su primer guión y tendrá acceso a config información en cada secuencia de comandos posterior por ejemplo

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

prefija la variable con una función u otra variable para darle más significado/contexto, por ejemplo config.option1 en lugar de simplemente option1 –

7

Por qué no usar una por separado js archivo para almacenar su configuración específica del entorno?

Al igual que puede usar varios archivos CSS para dar estilo a su página, también puede usar varios archivos js.

por lo que podría crear un archivo llamado app-config.js con los ajustes específicos:

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

Y a continuación, se incluyen los js en sus páginas como esta:

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

Una cosa que puede considere que las páginas incluyen bloques de JavaScript para proporcionar solo este tipo de información de configuración. A menudo, sólo se necesita una pequeña cantidad de información para la construcción URL etc. Voy a dar un ejemplo de JSP:

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

A continuación, el código Javascript "pura" puede mirar a window.appConfig para obtener información crítica. Obviamente, esto sería un desastre si necesitaras un montón de cosas.

Esto es particularmente fácil cuando sus páginas se crean a través de un sistema de plantillas en su entorno de servidor. De esta forma, solo tiene que establecer la etiqueta del script en un lugar (o en un pequeño número de lugares, las plantillas en otras palabras) y todas las páginas la obtienen automáticamente.

(editado para eliminar extraña declaración de variables)

0

me gustaría recomendar el uso YCB. Aquí hay un ejemplo de cómo usarlo: https://github.com/yahoo/ycb/blob/master/examples/simple/app.js

+4

Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace para referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. – ZygD

Cuestiones relacionadas