Das folgende Szenario: Ich baue eine AngularJS 2-App, die eine REST-API verwendet (die mit Elixir oder RoR oder was auch immer gebaut werden könnte). Während der Entwicklung möchte ich, dass AngularJS eine andere API verwendet als in der Produktion (vielleicht mit Testdaten, vielleicht weil ich die API zur gleichen Zeit erstelle und sie auf meinem Rechner läuft).
Außerdem möchten andere Mitglieder meines Teams möglicherweise eine andere lokale API-Adresse verwenden. Das heißt, das sollte nicht in das Versionskontrollsystem gehen.
So könnte zum Beispiel die api_base_url
für mich http://localhost:4000
, für meine Kollegin http://testapi.local
und für die Produktion http://api.example.com
sein.
Der Wert api_base_url
sollte in mehreren Komponenten verfügbar sein.
Was ist ein guter Ansatz, um damit umzugehen?
Sie könnten einen dedizierten Anbieter definieren, der diese Hinweise bereitstellt. So ähnlich:
%Vor%Wenn Sie Ihren Code für die Produktion verpacken, können Sie die Datei, die diesen Code enthält, durch die mit der Konfiguration für die Produktion ersetzen.
Um diese Konfiguration zu berücksichtigen, können Sie die Klasse RequestOptions
so erweitern, dass sie Ihrer gesamten Anfrage das Präfix apiBaseUrl
vorangestellt:
Vergessen Sie nicht, die Anfrageoptionen beim Booten Ihrer Anwendung zu konfigurieren:
%Vor%Diese Verarbeitung könnte in einer dedizierten JS-Datei enthalten sein, die innerhalb des Builds ersetzt würde (beispielsweise mit gulp und gulp-html-replace).
Siehe diese Frage:
Für den letzten Schritt können Sie die Anwendung auch asynchron basierend auf einer Konfigurationsdatei laden:
%Vor%Siehe diese Frage für weitere Details: