Какова цель Ember.Container

Может ли кто-нибудь объяснить, какая цель модуля Container находится в последнем Ember?

Пример его использования в настройке и в начале этого теста:

module("Ember.View - handlebars integration", {
  setup: function() {
    Ember.lookup = lookup = { Ember: Ember };
    lookup.TemplateTests = TemplateTests = Ember.Namespace.create();

    container = new Ember.Container();
    container.optionsForType('template', { instantiate: false });
  }

test("template view should call the function of the associated template", function() {
  container.register('template', 'testTemplate', Ember.Handlebars.compile("<h1 id='twas-called'>template was called</h1>"));

Ответ 1

Цель контейнера - предоставить более универсальный механизм описания зависимостей модулей, чем используемый ad-hoc подход.

Например, представьте, что вы хотите найти контроллер для маршрута post. Правила Ember по умолчанию - это то, что мы будем искать его как App.PostController. Перед контейнером мы просто жестко кодировали бы эти правила везде, где нам нужно было выполнить поиск (используя classify и друзей).

Контейнер предоставляет нам возможность определять эти правила в одном месте. В качестве бонуса правила могут быть переопределены для приложений, которым требуется другое соглашение.

Итак, вместо Ember.get(namespace, Ember.String.classify(name) + 'Controller') внутри мы делаем container.lookup('controller:' + name).