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.
{{view.xxxx}}
fonctionne dans un composant de la même manière que dans une vue.La réponse est simple: utiliser des composants
Selon une vidéo de formation enregistrée en août 2013, Yehuda Kats et Tom Dale (membres de l'équipe Ember Core) ont dit au public de ne pas utiliser de vues à moins que vous ne soyez un développeur de framework. Ils ont apporté de nombreuses améliorations aux guidons et introduit des composants, de sorte que les vues ne sont plus nécessaires. Les vues sont utilisées en interne pour alimenter des éléments tels que {{#if}} et {{outlet}}.
Les composants imitent également étroitement la norme Web Component qui sera intégrée au navigateur, il y a donc de nombreux avantages secondaires à devenir à l'aise dans la construction de composants Ember.
Mise à jour 27/11/2014
Il est encore plus important maintenant d'utiliser des composants au lieu de vues, car Ember 2.0 utilisera des composants routables lorsqu'une route est entrée, au lieu d'un contrôleur / vue. Afin de pérenniser votre application, il est préférable de rester à l'écart de Views.
Sources:
la source
En l'état actuel -
v2.x
étant la version stable actuelle - les vues ont été complètement obsolètes. On dit que les vues sont supprimées de l'API Ember 2.0 .Ainsi, l'utilisation du
{{view}}
mot-clé dans Ember 2.0 déclenchera une assertion:Si vous devez utiliser des vues dans Ember 2.0, vous pouvez utiliser l' addon ember-legacy-views , qui sera compatible avec Ember jusqu'à la version 2.4 .
Donc, pour résumer - les composants sont le présent (les vues étant supprimées) et l'avenir - ils remplaceront également les contrôleurs. Voir RFC sur les composants routables .
la source