2012-07-30 11 views
5

Necesito establecer una clave diferente dependiendo de si estamos en desarrollo o producción. ¿Cuál es una buena manera de hacer esto en el lado del cliente que no tiene un entorno de tiempo de ejecución inherente?¿Cómo configuro variables ambientales en mi código del lado del cliente?

Gracias!

+2

Ha considerado el uso de una build-script? Cuando minimiza su código, también cambia el valor de la variable del desarrollo a la producción. –

+0

Al decir "sin entorno de tiempo de ejecución inherente", ¿quiere decir también que podría ejecutarse en un shell de intérprete en lugar de desplegarse en un sitio web? – bchurchill

+0

@ChristoferEliasson Creo que esta podría ser la mejor ruta, gracias por la sugerencia. – fancy

Respuesta

0

¿Por qué no cargar un script diferente? Puede crear el script de forma dinámica en función de un parámetro GET, p. http://example.org/script.js?development=1, y luego cambie el contenido del código basado en ese parámetro con un lenguaje del lado del servidor como PHP.

También puede usar reglas de reescritura en su servidor web para que se vea más limpio.

-1

Si entiendo bien, intente esto:

if (window.location.protocol === 'file:') { 
    // Development environment 
} 
else { 
    // Production environment 
}; 
+0

Esto no funcionará si trabaja en localhost – borisdiakur

4

Una forma es inyectar una variable de entorno del servidor en el espacio de nombres global en el cliente.

Por ejemplo, si estuviera haciendo esto en PHP:

<script> 
    var env = <?php echo $your_env_variable; ?>; // globally accessible variable 
</script> 

Ahora puede acceder a esa variable de entorno de cualquier archivo JavaScript que se ejecutan después de que la etiqueta de script.

En nodo que podría hacer lo mismo, pero con plantillas (por ejemplo Jade):

script(type='text/javascript'). 
    var env = passedInEnvVar 
1

En nodejs la forma "oficial" para especificar el entorno es el uso de "NODE_ENV". Como no mencionó el marco que está utilizando para servir el contenido HTML, usaré expressjs como respuesta.

Simplemente puede hacer esto en su plantilla de vista (estoy usando EJS)

var key = '<%= keys[process.env.NODE_ENV] %>' 

que se necesitan para preparar un conjunto de teclas que corresponden a cada entorno

var keys = { 
    'development': 'dev-key', 
    'production': 'prod-key' 
} 
Cuestiones relacionadas