Правильный способ доступа к текущей конфигурации приложения

Я добавил несколько конфигураций в myapp/config/environment:

if (environment === 'development') {
  ENV.APP.AuthURL = 'http://localhost:5000/';
}

Теперь, чтобы получить доступ к этой конфигурации, я должен использовать какой-либо метод или напрямую обращаться к window.Myapp?

Ответ 1

На момент написания этой статьи существует несколько современных способов доступа к нему из вашего приложения:

  1. import ENV from 'your-application-name/config/environment';
    • your-application-name должно быть то, что в modulePrefix ключе config/environment.js и name ключа package.json
  2. Через 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 🎉

Это будет работать в вашем приложении и также будет работать, если вы создадите аддон, который будет использоваться вашим приложением 👍