Un Ember.View est actuellement limité aux balises créées pour vous par le W3C. Mais si vous vouliez définir vos propres balises HTML spécifiques à l'application, puis implémenter leur comportement à l'aide de JavaScript? Vous ne pouvez pas faire cela avec un Ember.View .
C'est exactement ce que les composants vous permettent de faire. En fait, c'est une si bonne idée que le W3C travaille actuellement sur la spécification des éléments personnalisés .
L'implémentation des composants par Ember essaie d'être aussi proche que possible des spécifications des composants Web. Une fois que les éléments personnalisés sont largement disponibles dans les navigateurs, vous devriez être en mesure de migrer facilement vos composants Ember vers la norme W3C et de les rendre utilisables par d'autres frameworks qui ont adopté la nouvelle norme.
C'est si important pour nous que nous travaillons en étroite collaboration avec les organismes de normalisation pour garantir que notre mise en œuvre des composants correspond à la feuille de route de la plate-forme Web.
Il est également important de noter qu'un Ember.Component est en fait un Ember.View (une sous-classe) mais qui est complètement isolé . L'accès aux propriétés dans ses modèles va à l' objet de vue et les actions sont également ciblées sur l' objet de vue . Il n'y a pas d'accès aux informations contextuelles environnantes context
ou extérieures , ce qui n'est pas le cas avec un Ember.View qui a effectivement accès à son contrôleur environnant, par exemple à l'intérieur d'une vue, vous pourriez faire quelque chose comme qui vous donnerait le contrôleur actuellement associé à la vue.controller
this.get('controller')
Alors, quelle est la principale différence entre une vue et un composant?
Ainsi, la principale différence en plus du fait que les composants vous permettent de créer vos propres balises et à un moment donné dans le futur, lorsque les éléments personnalisés sont disponibles, migre / utilise également ces composants dans d'autres frameworks qui prendront en charge les éléments personnalisés, est en effet qu'à un moment donné, un composant de braise rendra une vue quelque peu obsolète en fonction du cas d'implémentation spécifique.
Et quel serait un exemple courant où je préférerais utiliser une vue sur un composant et vice versa?
Suite à ce qui précède, cela dépend clairement de vos cas d'utilisation. Mais en règle générale, si vous avez besoin dans votre vue, d'accéder à son contrôleur environnant, etc., utilisez un Ember.View , mais si vous souhaitez isoler la vue et ne transmettre que les informations dont elle a besoin pour fonctionner, ce qui la rend indépendante du contexte et bien plus réutilisable, utilisez un Ember.Component .
J'espère que ça aide.
Mettre à jour
Avec la publication de Road to Ember 2.0, vous êtes maintenant encouragé à utiliser des composants plutôt que des vues dans la plupart des cas.