Komponente gegen Widget

10

Was ist in Magento 2 der Unterschied zwischen einer Komponente und einem Widget? Zum Beispiel gibt es eine modale Komponente und ein modales Widget, beide scheinen dasselbe zu tun.

Komponente

Die Modal UI-Komponente implementiert ein sekundäres Fenster, das über dem Hauptfenster geöffnet wird. Es verwendet das modale Widget.

Widget

Das modale Magento-Widget implementiert ein sekundäres Fenster, das über dem Hauptfenster geöffnet wird.

Das Widget kann mit einigen Zeilen JS initialisiert werden, wobei die Komponente viele XML-Zeilen benötigt und das Widget weiterhin verwendet. Warum sollte jemand die XML-Methode verwenden?

Ben Crook
quelle

Antworten:

6

Das Widget kann mit wenigen Zeilen JS initialisiert werden, wobei die Komponente viele XML-Zeilen benötigt und das Widget weiterhin verwendet. Warum sollte jemand die XML-Methode verwenden?

Das UI-Komponentensystem ermöglicht es einem Entwickler, eine Reihe verschiedener RequireJS-Module als KnockoutJS-Ansichtsmodellkonstruktoren (mit zugehörigen "entfernten" Knockout.js-Vorlagen) zu verpacken und diese Ansichtsmodelle dann in der HTML-Quelle der Magento-Seite mit a zu verwenden spezielle Knockout.js-Bereichsbindung. Jede UI-Komponente ist auch einem Satz serverseitiger Daten zugeordnet. Das Endziel besteht darin, eine komplexe UI-Funktionalität zu erstellen, die nicht nur eine riesige, unordentliche Javascript-Datei ist, sondern die Endbenutzer mit einem einfachen <uiCompnent name="foo"/>XML in ihr Layout aufnehmen können.

Sie haben also Recht, dass der Einstieg in das modale Widget einfacher ist. Wenn Sie jedoch eine komplexe UI-Komponente erstellen und möchten, dass Ihre komplexe UI-Komponente modale Funktionen enthält, ziehen Sie die modale UI-Komponente ein.

Zumindest - das ist mein aktuelles Verständnis der Situation / des Systems. Mehr Kontext in meiner UI-Komponentenserie (Selbstlink), wenn Sie interessiert sind

Alan Storm
quelle
Wenn ich eine Aufgabe für CRUD habe, die mit Modelldaten verknüpft ist, sollte ich eine modale Komponente anstelle eines modalen Widgets verwenden! Richtig ? Aber es scheint schwieriger zu implementieren
mrtuvn
Danke für die Antwort und Link @ Alan-Storm, ich werde sie auf jeden Fall überprüfen. Es scheint viel schwieriger zu implementieren, aber ich nehme an, dass es für eine große Arbeit sinnvoller ist. Ich werde es ein paar Tage geben, um mehr Antworten zu erhalten, als eine zu akzeptieren.
Ben Crook