Правильный способ доступа к текущей конфигурации приложения
Я добавил несколько конфигураций в myapp/config/environment
:
if (environment === 'development') {
ENV.APP.AuthURL = 'http://localhost:5000/';
}
Теперь, чтобы получить доступ к этой конфигурации, я должен использовать какой-либо метод или напрямую обращаться к window.Myapp
?
Ответы
Ответ 1
На момент написания этой статьи существует несколько современных способов доступа к нему из вашего приложения:
-
import ENV from 'your-application-name/config/environment';
-
your-application-name
должно быть то, что в modulePrefix
ключе config/environment.js
и name
ключа package.json
- Через
Ember.getOwner(this).resolveRegistration('config:environment');
Номер один предполагает, что вы используете Ember CLI и подробно описан в документах ember в разделе Настройка вашего приложения:
Ember CLI поставляется с поддержкой управления средой вашего приложения. Ember CLI установит файл конфигурации среды по умолчанию в config/environment. Здесь вы можете определить объект ENV для каждой среды, которая в настоящее время ограничена тремя: разработка, тестирование и производство.
Объект ENV содержит три важных ключа:
- EmberENV можно использовать для определения флагов объектов Ember (см. Руководство "Флаги объектов").
- Приложение может использоваться для передачи флагов/опций вашему экземпляру приложения.
- Среда содержит имя текущей среды (разработка, производство или тестирование).
Вы можете получить доступ к этим переменным среды в коде вашего приложения, импортировав их из вашего-application-name/config/environment.
Ответ 2
Вы можете получить к нему доступ, импортировав environment.js
, используя следующую строку:
import config from '../config/environment';
Например, скажем, вы хотите получить доступ к своей конфигурации в контроллере. Вот как это выглядит:
import Ember from 'ember';
import config from '../config/environment';
export default Ember.Controller.extend({
foo: config.APP.AuthURL
});
Если вам нужно, вы можете получить доступ к нему в своем шаблоне контроллера, используя:
{{foo}}
Ответ 3
Хотя @rog ответ верен и будет работать во всех случаях, когда вы пытаетесь получить доступ к конфигурации из своего приложения, существуют некоторые крайние случаи (например, доступ к конфигурации из аддона), для которых он не будет работать.
Я бы порекомендовал проверить дополнение ember-get-config
: https://www.emberobserver.com/addons/ember-get-config
После установки ember-get-config
вы можете импортировать вашу конфигурацию, используя следующий код:
import config from 'ember-get-config';
const { AuthURL } = config;
// now you have access to AuthURL 🎉
Это будет работать в вашем приложении и также будет работать, если вы создадите аддон, который будет использоваться вашим приложением 👍