2012-07-30 15 views
5

Ho bisogno di impostare una chiave diversa a seconda se siamo in fase di sviluppo o produzione. Qual è un buon modo per farlo in client-side che non ha un ambiente di runtime inerente?Come imposto le variabili ambientali nel mio codice lato client?

Grazie!

+2

Hai pensato di usare un costruire-script? Quando minimizzi il tuo codice, cambi anche il valore della variabile dallo sviluppo alla produzione. –

+0

Con "nessun ambiente di runtime inerente", intendi anche che potrebbe essere eseguito in una shell di interprete o distribuito su un sito web? – bchurchill

+0

@ChristoferEliasson Penso che questa potrebbe essere la via migliore, grazie per il suggerimento. – fancy

risposta

0

Perché non caricare semplicemente uno script diverso? Puoi creare lo script in modo dinamico in base a un parametro GET, ad es. http://example.org/script.js?development=1, quindi modifica il contenuto del codice in base a quel parametro con un linguaggio sul lato server come PHP.

È anche possibile utilizzare le regole di riscrittura sul server Web per renderlo più pulito.

-1

Se ho capito bene, provate questo:

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

Questo non funzionerà se si lavora su localhost – borisdiakur

4

Un modo è quello di iniettare una variabile di ambiente dal server nel namespace globale sul client.

Ad esempio, se si stesse facendo questo in PHP:

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

Ora è possibile accedere a tale variabile d'ambiente da qualsiasi file JavaScript che vengono eseguiti dopo che tag script.

In nodo che si sarebbe fare la stessa cosa, ma con template (ad esempio Jade):

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

In nodejs il modo "ufficiale" per specificare l'ambiente è quello di utilizzare "NODE_ENV". Dato che non hai menzionato il framework che stai usando per servire il contenuto HTML, userò expressjs per la mia risposta.

Si può semplicemente fare questo nel vostro modello di vista (sto usando EJS)

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

È necessario preparare un mazzo di chiavi corrispondenti ad ogni ambiente

var keys = { 
    'development': 'dev-key', 
    'production': 'prod-key' 
} 
Problemi correlati