Ответ 1
Ember.View
Ember.View в настоящее время ограничивается тегами, которые создаются для вас W3C. Но если вы хотели бы определить свои собственные теги HTML-приложений, а затем реализовать их поведение с помощью JavaScript? Вы не можете сделать это с помощью Ember.View.
Ember.Component
Именно то, что компоненты позволяют вам делать. На самом деле, такая хорошая идея, что W3C в настоящее время работает над спецификацией Custom Elements.
Углубленная реализация компонентов пытается как можно ближе к спецификации веб-компонентов. Когда Пользовательские элементы широко доступны в браузерах, вы должны легко переносить свои компоненты Ember на стандарт W3C и использовать их для использования другие рамки, а также принявшие новый стандарт.
Это настолько важно для нас, что мы тесно сотрудничаем с органами стандартов, чтобы гарантировать, что наша реализация компонентов соответствует дорожной карте веб-платформы.
Также важно отметить, что Ember.Component на самом деле Ember.View (подкласс), но это полностью изолировано. Доступ к свойствам в его шаблонах переходит к объекту view, а действия также нацелены на объект view. Нет доступа к окружению context
или external controller
вся контекстная информация передается в, что не соответствует Ember.View, который действительно имеет доступ к нему, окружающему контроллер, например, внутри представления вы можете сделать что-то вроде this.get('controller')
, которое даст вам контроллер, который в настоящее время связан с представлением.
Итак, в чем основное отличие между представлением и компонентом?
Итак, основное отличие, помимо того, что компоненты позволяют создавать собственные теги и в какой-то момент в будущем, когда Пользовательские элементы доступны также переносить/использовать эти компоненты в других рамках, которые будут поддерживать настраиваемые элементы, действительно, в какой-то момент компонент ember сделает вид несколько устаревшим в зависимости от конкретного случая реализации.
И какой будет распространенный пример, когда я предпочел бы использовать представление над компонентом и наоборот?
Следуя вышеизложенному, это явно зависит от ваших вариантов использования. Но, как правило, если вам нужен доступ к нему вокруг контроллера и т.д., Используйте Ember.View, но если вы хотите изолировать представление и пройти только в информации, которую он должен работать, делая его контекстно-агностическим и гораздо более многоразовым, используйте Ember.Component.
Надеюсь, что это поможет.
Update
С публикацией Road to Ember 2.0 теперь вам предлагается использовать Компоненты вместо представлений в большинстве случаев.