Jaki jest najlepszy sposób utworzenia pliku konfiguracyjnego (Coś jak konfiguracja internetowa w .net), do przechowywania adresów URL i innych stałych, które mogą się różnić podczas wdrażania aplikacji?Plik konfiguracyjny w AngularJS
Odpowiedz
pomocą metody .constant()
:
angular.module('app').constant('MONGOLAB_CONFIG', {
baseUrl: '/databases/',
dbName: 'ascrum'
});
jak w this example.
Następnie możesz po prostu wstrzyknąć tam, gdzie potrzebujesz stałych.
Możesz mieć różne pliki definiujące różne stałe dla rozwoju lub produkcji, a następnie użyj narzędzia takiego jak Grunt, aby użyć tego lub tego pliku odpowiednio do środowiska.
Załóżmy masz tego rodzaju struktury folderu:
|-js/
| |-app.js
| |-anotherfile.js
| |-...
|
|-env/
| |-dev.js
| |-prod.js
|
|-index.html
dev.js
i prod.js
definiuje samą .constant()
usługi z różnymi wartościami. Następnie można uzyskać właściwy plik być łączone z gruntFile tak:
grunt.registerTask('default', ['concat']);
grunt.initConfig({
env : process.env.NODE_ENV,
src: {
javascript: ['js/*.js'],
config: ['env/<%= env %>.js']
},
concat: {
javascript: {
src:['<%= src.config %>', '<%= src.javascript %>'],
dest:'myapp.js'
}
}
});
Uruchamiając grunt
dostaniemy plik myapp.js
zawierający dobre stałe.
Edit: z Gulp można zrobić to tak:
var paths = [
'env/' + process.env.NODE_ENV + '.js',
'js/**/*.js',
];
var stream = gulp.src(paths)
.pipe(plugins.concat('main.js'))
.pipe(gulp.dest('/output'));
IMHO, nie lubię obsługi plików konfiguracyjnych z biegaczy zadaniowych. Powoduje, że musisz przebudować całą aplikację, aby zmienić linię lub dwie za każdym razem, gdy potrzebujesz innej konfiguracji.
Używanie .config
kątowego jest dobrą rzeczą i chciałbym zrobić coś takiego (pożyczek na przykładzie pierwszej odpowiedzi) Nazwa
angular.module('app').constant('MONGOLAB_CONFIG', {
baseUrl: '/databases/',
dbName: 'ascrum'
});
zróbmy to jak app.config.js
i będzie to powiązane w .html tuż po minified skryptu jak ten
<script src="js/app-38e2ba1168.js"></script> //the application's minified script
<script src="/app.config.js"></script>
można tylko wtedy edytować app.config.js
f ile bez ponownego uruchamiania jakichkolwiek zadań. Dzięki temu możesz mieć różne pliki app.config.js
na różnych komputerach/środowiskach bez ponownego budowania aplikacji ponownie.
Myśląc nieszablonowo, nie chcesz używać programu .constant, ponieważ jest on związany z aplikacją. Użyj konfiguracji, która znajduje się poza aplikacją i masz większą kontrolę nad konfiguracjami env. Podałem poniżej link wyjaśniający pułapki konfiguracji w samej konstrukcji kątowej.
(function hydrateConfiguration() {
"use strict";
var xhr = new XMLHttpRequest();
xhr.open("get", "conf.json", window);
xhr.onload = function() {
var status = xhr.status;
if (status === 200) {
if (xhr.responseText) {
var response = JSON.parse(xhr.responseText);
window.ss_conf = response;
}
} else {
console.error("messages: Could not load confguration -> ERROR ->", status);
}
};
xhr.send())());
Prosty przykład gdzie zewnętrzny plik konfiguracyjny steruje stanem aplikacji i wstrzykuje wartości na zewnątrz zamiast w środku.
https://www.jvandemo.com/how-to-configure-your-angularjs-application-using-environment-variables/
To wydaje się być oparte na importowaniu twoich vars na obiekt 'window'. Popraw mnie, jeśli jestem zły, ale podejście @Louie Almeda wydaje się lepsze, ponieważ robi to samo, ale importuje do konfiguracji kątowej, a nie do okna? Opinie mile widziane – redfox05
- 1. Plik konfiguracyjny aplikacji iOS
- 2. . Własny plik konfiguracyjny .NET
- 3. Proguard ignoruje plik konfiguracyjny biblioteki
- 4. Karma plik konfiguracyjny - wykorzystanie basePath
- 5. Jak wstępnie załadować plik konfiguracyjny w angular2
- 6. Jak odczytać plik konfiguracyjny w Javie
- 7. Plik konfiguracyjny rejestrowania w języku Python
- 8. C#: plik konfiguracyjny w folderze bin \ debug
- 9. pojedynczy plik konfiguracyjny do sporządzania roztworu
- 10. PHPUnit - opcja pokrycia, aby zastąpić plik konfiguracyjny
- 11. Jak napisać plik konfiguracyjny pep8 (pep8.rc)?
- 12. Plik konfiguracyjny dla obrazu Neo4j Docker
- 13. ipython notebook nie odczyta plik konfiguracyjny
- 14. JSF twarze plik konfiguracyjny poza WEB-INF?
- 15. php.ini jest nieistniejącym Załadowany plik konfiguracyjny (brak)
- 16. Jak zmodyfikować plik konfiguracyjny na wdrożenie clickonce?
- 17. character-set-server i MySQL plik konfiguracyjny
- 18. node.js plik konfiguracyjny błąd linia 433
- 19. Czy możemy zaszyfrować cały plik konfiguracyjny?
- 20. Jak dodać plik konfiguracyjny do studia Android w systemie Windows?
- 21. Jak zmienić App.config na plik konfiguracyjny json w .Net Core
- 22. Jak utworzyć niestandardowy plik konfiguracyjny yaml w Symfony
- 23. Jak określić plik konfiguracyjny dla pylint w systemie Windows?
- 24. AWS Deployment with Rails - plik konfiguracyjny w .ebextensions
- 25. Jak ustawić plik konfiguracyjny logowania w środowisku wykonawczym?
- 26. Konwertuj plik konfiguracyjny application.yml na application.groovy w Grails 3.x
- 27. Jak zabezpieczyć plik konfiguracyjny bazy danych w projekcie?
- 28. Plik konfiguracyjny pojawia się w folderze bin po opublikowaniu
- 29. Plik dźwiękowy AngularJS + HTML5
- 30. Określanie osobny plik konfiguracyjny na mysqldump linii poleceń
To może być jedyny sposób, ale ma w końcu jeden wielki problem - jak zachować Diferent wartości stałych dla różnych środowisk (Przykład: baseUrl dla dev i env produkcji). Spójrz na to, może pomóc: http://stackoverflowflow.com/questions/16339595/angular-js-configuration-d-different-enviroments –
@Light I zaktualizował mój anwser. Mam nadzieję, że to pomoże. – maxdec
Jest to bardzo pomocne, dzięki! –