Eine Ember.View ist derzeit auf die Tags beschränkt, die vom W3C für Sie erstellt werden. Aber wenn Sie Ihre eigenen anwendungsspezifischen HTML-Tags definieren und deren Verhalten dann mit JavaScript implementieren möchten? Mit einem Ember.View ist dies nicht möglich .
Genau das können Sie mit Komponenten tun. Tatsächlich ist es eine so gute Idee, dass das W3C derzeit an der Spezifikation für benutzerdefinierte Elemente arbeitet .
Die Implementierung von Komponenten durch Ember versucht, der Spezifikation der Webkomponenten so nahe wie möglich zu kommen. Sobald benutzerdefinierte Elemente in Browsern weit verbreitet sind, sollten Sie in der Lage sein, Ihre Ember-Komponenten problemlos auf den W3C-Standard zu migrieren und sie auch von anderen Frameworks verwenden zu können, die den neuen Standard übernommen haben.
Dies ist für uns so wichtig, dass wir eng mit den Normungsgremien zusammenarbeiten, um sicherzustellen, dass unsere Implementierung von Komponenten der Roadmap der Webplattform entspricht.
Es ist auch wichtig zu beachten, dass eine Ember.Component tatsächlich eine Ember.View (eine Unterklasse) ist, die jedoch vollständig isoliert ist . Der Eigenschaftszugriff in seinen Vorlagen erfolgt zum Ansichtsobjekt , und Aktionen werden auch auf das Ansichtsobjekt gerichtet . Es gibt keinen Zugriff auf die Umgebung context
oder controller
alle äußeren Kontextinformationen werden übergeben , was bei einem Ember.View nicht der Fall ist, der tatsächlich Zugriff auf den umgebenden Controller hat, z. B. in einer Ansicht, in der Sie so etwas tun könnten, wie Sie es this.get('controller')
möchten Controller, der derzeit der Ansicht zugeordnet ist.
Was ist der Hauptunterschied zwischen einer Ansicht und einer Komponente?
Der Hauptunterschied neben den Komponenten, mit denen Sie Ihre eigenen Tags erstellen können, und zu einem späteren Zeitpunkt, wenn benutzerdefinierte Elemente verfügbar sind, können Sie diese Komponenten auch in anderen Frameworks migrieren / verwenden, die benutzerdefinierte Elemente unterstützen. Dies ist in der Tat, dass es sich irgendwann um eine Glutkomponente handelt wird eine Ansicht je nach dem spezifischen Implementierungsfall etwas veraltet machen.
Und was wäre ein häufiges Beispiel, bei dem ich lieber eine Ansicht über eine Komponente verwenden würde und umgekehrt?
Im Folgenden hängt dies eindeutig von Ihren Anwendungsfällen ab. Als Faustregel gilt jedoch, dass Sie in Ihrer Ansicht Zugriff auf den umgebenden Controller usw. benötigen. Verwenden Sie jedoch eine Ember.View . Wenn Sie jedoch die Ansicht isolieren und nur die Informationen übergeben möchten, die für die Arbeit erforderlich sind, ist sie kontextunabhängig und viel wiederverwendbarer, verwenden Sie eine Ember.Component .
Ich hoffe es hilft.
Aktualisieren
Mit der Veröffentlichung von Road to Ember 2.0 wird Ihnen jetzt empfohlen, in den meisten Fällen Komponenten anstelle von Ansichten zu verwenden.
{{view.xxxx}}
funktioniert in einer Komponente genauso wie in einer Ansicht.Die Antwort ist einfach: Verwenden Sie Komponenten
Laut einem Schulungsvideo, das im August 2013 aufgenommen wurde, haben Yehuda Kats und Tom Dale (Ember Core Team-Mitglieder) dem Publikum geraten, keine Ansichten zu verwenden, es sei denn, Sie sind Framework-Entwickler. Sie haben viele Verbesserungen am Lenker vorgenommen und Komponenten eingeführt, sodass keine Ansichten mehr erforderlich sind. Ansichten werden intern verwendet, um Dinge wie {{#if}} und {{outlet}} mit Strom zu versorgen.
Die Komponenten ahmen auch den Webkomponenten-Standard nach, der in den Browser integriert wird. Daher bietet das komfortable Erstellen von Ember-Komponenten viele Nebeneffekte.
Update 27.11.2014
Es ist jetzt noch wichtiger, Komponenten anstelle von Ansichten zu verwenden, da Ember 2.0 bei der Eingabe einer Route routingfähige Komponenten anstelle eines Controllers / einer Ansicht verwendet. Um Ihre App zukunftssicher zu machen, sollten Sie sich von Views fernhalten.
Quellen:
quelle
In
v2.x
der jetzigen Form - als aktuelle stabile Version - sind die Ansichten vollständig veraltet. Es wird gesagt, dass Ansichten aus der Ember 2.0-API entfernt werden .Die Verwendung eines
{{view}}
Schlüsselworts in Ember 2.0 löst also eine Behauptung aus:Wenn Sie Ansichten in Ember 2.0 verwenden müssen, können Sie das Add- Ember Ember-Legacy-Ansichten verwenden , das bis Version 2.4 mit Ember kompatibel ist .
Zusammenfassend lässt sich sagen, dass Komponenten die Gegenwart (Ansichten werden entfernt) und die Zukunft sind. Sie werden auch Steuerungen ersetzen. Siehe Routable Components RFC .
quelle