2012-07-30 14 views
5

Muszę ustawić inny klucz w zależności od tego, czy jesteśmy w fazie rozwoju lub produkcji. Co to jest dobry sposób, aby to zrobić po stronie klienta, który nie ma nieodłącznego środowiska uruchomieniowego?Jak ustawić zmienne środowiskowe w moim kodzie po stronie klienta?

Dzięki!

+2

Czy uważane za pomocą build-script? Minimalizując kod, zamieniasz wartość zmiennej z wersji rozwojowej na produkcyjną. –

+0

Przez "brak nieodłącznego środowiska uruchomieniowego" rozumiesz również, że może on zostać wykonany w powłoce interpretera, a nie w witrynie? – bchurchill

+0

@ ChristristoferEliasson Myślę, że to może być najlepsza trasa, dzięki za sugestię. – fancy

Odpowiedz

0

Dlaczego po prostu nie załadować innego skryptu? Możesz utworzyć skrypt dynamicznie na podstawie parametru GET, np. http://example.org/script.js?development=1, a następnie zmień zawartość kodu na podstawie tego parametru za pomocą języka po stronie serwera, takiego jak PHP.

Możesz również użyć reguł przepisywania na swoim serwerze sieciowym, aby wyglądał czystszy.

-1

Jeśli rozumiem prawo, spróbuj tego:

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

To nie zadziała, jeśli pracujesz na localhost – borisdiakur

4

Jednym ze sposobów jest wstrzykiwać zmienną środowiskową z serwera do globalnej przestrzeni nazw na kliencie.

Na przykład, jeśli robisz to w PHP:

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

Teraz można uzyskać dostęp do zmiennej środowiskowej z dowolnych plików javascript, które są wykonywane po tym tagu skryptu.

W węźle byś zrobić to samo, ale z szablonów (na przykład): Jade

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

W nodejs „oficjalnego” sposób określić środowisko jest w użyciu „NODE_ENV”. Ponieważ nie wspomniałeś o frameworku używanym do obsługi treści HTML, użyję ekspresów Express dla mojej odpowiedzi.

Można po prostu zrobić to w widoku szablonu (używam EJS)

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

Trzeba będzie przygotować zestaw kluczy odpowiadających każdemu środowisku

var keys = { 
    'development': 'dev-key', 
    'production': 'prod-key' 
} 
Powiązane problemy