Zuerst einmal tun das Reactions-Plugin und die change-like-icon-Theme-Komponente (fast) nicht dasselbe.
Ja, Sie können das Reactions-Plugin verwenden, um das Like-Symbol zu ändern, aber sein Hauptzweck ist es, mehrere mögliche Reaktionen anzubieten, daher ist seine Funktionalität viel breiter gefasst als nur eine kosmetische Änderung.
Ein Plugin kann alles tun, was eine Theme-Komponente kann, aber eine Theme-Komponente kann nicht alles tun, was ein Plugin kann.
Ein Plugin besteht aus serverseitigem und clientseitigem Code,
und eine Theme-Komponente besteht nur aus clientseitigem Code und muss sich auf vorhandenen serverseitigen Code verlassen.
Das stimmt zwischen diesen beiden. Ich habe nicht viel darüber nachgedacht, reaktiv zu sein war heute mein zweiter Vorname
Also – in der realen Welt machen Plugins und Komponenten nie dasselbe und dann ist der einzige Grund, das eine oder andere zu verwenden, wofür es dient?
Das stimmt, aber es schien aus einem anderen Thema, dass alles, was er tun wollte, war, das zu tun, was die Theme-Komponente tut, und nur ein anstelle eines zu haben.
Wenn Sie Änderungen an Rails vornehmen müssen (wie z. B. das Speichern oder Abrufen anderer Daten aus der Datenbank), benötigen Sie ein Plugin.
Wenn Sie nur das Frontend (Ember und CSS) ändern, reicht eine Theme-Komponente aus. (Vor einiger Zeit war der Unterschied nuancierter.)
Wenn das, was Sie tun, nur in Ember erreicht werden kann, ist eine Theme-Komponente einfacher zu installieren, da sie kein Neuerstellen des Docker-Images erfordert.
Dies war früher ein Plugin, bis ein Teil seiner Funktionalität von Core übernommen wurde (Thumbnails), woraufhin ich den größten Teil seiner Funktionalität in eine Theme-Komponente integrieren konnte, um ihm ein größeres Publikum und eine einfachere Installation zu ermöglichen.
Ich habe einige erweiterte Funktionen hinzugefügt und beibehalten, die Änderungen am Backend erfordern, in einem ergänzenden Plugin.
Ein weiteres gutes Beispiel hier ist Guest Gate Theme Component. Dies begann als Plugin, aber es stellt sich heraus, dass man es nicht sein muss, also wurde es als neue Theme-Komponente wiedergeboren (Plugins gab es vor Theme-Komponenten).
Es gibt wahrscheinlich immer noch ein oder zwei Plugins, die in eine Theme-Komponente umgewandelt werden könnten (mir fällt spontan eines ein) … und es wird wahrscheinlich weitere Kandidaten geben, da mehr Funktionalität zur Core-API hinzugefügt wird …