Как установить файл конфигурации или свойств для разных сред в angular?

Angular 5.2.9: мне нужно изменить некоторые ключи api для разных сред (pre prod, prod и т. Д.). Но прямо сейчас мне нужно изменить ключи в моем классе appSettings и строить его каждый раз перед развертыванием в каждом env. Это способ сохранить ключи api внутри некоторого файла конфигурации или свойств, чтобы я мог хранить их в каждом env и развертывать один и тот же встроенный код повсюду.

0
0
558
1

Ответы 1

Я использую два разных способа настройки своих приложений Angular. Первый - визуализировать страницу Angular index.html на стороне сервера. Вы можете использовать любой язык в серверной части для визуализации HTML-страницы, содержащей:

<head>
  <meta charset="utf-8">
  <title>...</title>
  <base href="/angular-app-context/">
  <script>
  var CONFIG = {
    BACKEND_URL : "http://10.0.0.1:9000/backend-context/",
    AVAILABLE_LANGUAGES : "fr,de,it".split(",")
    // here you can configure whatever you want with server-side properties
  };
  </script>
  <link href="styles.16fc164c6ad7cb#######.bundle.css" rel="stylesheet"/>
</head>
<script type="text/javascript" src="inline.f499ecf4e7218#######.bundle.js"></script>
<!-- other Angular files -->

Обратите внимание, что файлы Angular, сгенерированные компиляцией, имеют в имени контрольную сумму. Вам нужно будет каким-то образом динамически внедрить эти имена в ваш шаблон index.html. В моем случае я делаю это с помощью Gradle, который компилирует приложение Angular, извлекает имена сгенерированных файлов из папки dist, а затем вставляет их в файл шаблона index.html очень простого приложения WAR Tomcat (подробности отсутствуют объема вашего вопроса).

Доступ к этим свойствам CONFIG можно получить из кода Angular. Взгляните на эта почта, показывающий, как это сделать. Мой совет - использовать это только для минимальной конфигурации (обычно URL-адреса серверной части).

Второй способ настройки приложения - загрузка информации из серверной части с помощью HTTP при запуске. Просто упакуйте их как JSON и получите к ним доступ через обычный вызов HttpClient. Вы можете использовать BACKEND_URL из моего первого предложения, чтобы помочь, если у вас есть серверы с очень разными URL-адресами.

Другие вопросы по теме