Ember.View в даний час обмежується тегами, які створюються для вас W3C. Але якщо ви хочете визначити власні HTML-теги для додатків, а потім реалізувати їх поведінку за допомогою JavaScript? Насправді це не можна зробити за допомогою Ember.View .
Саме це дозволяє вам робити компоненти. Насправді це така гарна ідея, що W3C зараз працює над специфікацією Custom Elements .
Реалізація компонентів Ембер намагається максимально наблизитись до специфікації веб-компонентів. Як тільки користувальницькі елементи будуть широко доступними у браузерах, ви зможете легко перенести компоненти Ember до стандарту W3C, і вони зможуть користуватися іншими структурами, які також прийняли новий стандарт.
Для нас це так важливо, що ми тісно співпрацюємо з органами зі стандартів, щоб забезпечити, щоб наша реалізація компонентів відповідала дорожній карті веб-платформи.
Також важливо відзначити, що Ember.Component - це фактично Ember.View (підклас), але це повністю ізольовано . Доступ до власності в його шаблонах іде до об’єкта перегляду, а дії націлені також на об’єкт перегляду . Немає доступу до навколишньої context
або зовнішньої controller
всієї контекстної інформації передається , що не стосується Ember.View, який дійсно має доступ до оточуючого його контролера, наприклад, всередині подання ви можете зробити щось на кшталт того, this.get('controller')
що дасть вам на даний момент контролер, пов'язаний з представленням даних.
Отже, яка головна відмінність між видом і компонентом?
Отже, основна відмінність, крім того, що компоненти дозволяють вам створити власні теги і в якийсь момент в майбутньому, коли користувацькі елементи доступні, також мігруватимуть / використовувати ті компоненти в інших структурах, які підтримуватимуть користувацькі елементи, насправді полягає в тому, що в якийсь момент компонент вугілля зробить вигляд дещо застарілим залежно від конкретного випадку реалізації.
І що може бути загальним прикладом, коли я вважаю за краще використовувати погляд на компонент і навпаки?
Дотримуючись вищесказаного, це чітко залежить від ваших випадків використання. Але, як правило, якщо вам потрібен доступ до оточуючого контролера і т.д., використовуйте a Ember.View , але якщо ви хочете виділити подання і передати лише ту інформацію, яка йому потрібна для роботи, зробивши його контекстно-агностичним та багато іншого для багаторазового використання, використовуйте Ember.Component .
Сподіваюся, це допомагає.
Оновлення
Опублікувавши « Дорогу до Ембер 2.0», у більшості випадків вам пропонується використовувати компоненти замість перегляду.