Danke an alle.
Das hatte ich schon gesehen, aber es freut mich, die Bestätigung zu erhalten, dass es nicht möglich ist, Ember-Add-ons hinzuzufügen, bevor dieses Upgrade abgeschlossen ist. Es klingt also so, als ob das Hinzufügen von Ember-Add-ons bald möglich sein wird – sobald das Upgrade abgeschlossen ist. Das klingt großartig.
Ich finde das eine interessante Frage. Hier meine zwei Cent:
Im Hinblick auf die Nutzung der „abstrahierten Dinge“ von Discourse im Vergleich zu Ember-Add-ons: Ich könnte mich irren, aber ich denke, dass die Verwendung von Ember-Add-ons für bestimmte Aufgaben in Plugins in Fällen, in denen Sie etwas anderes tun möchten als das, was Discourse bereits bietet, einfacher zu warten sein könnte. So denke ich:
Ein Beispiel hierfür ist der Wunsch, in einem Plugin ein brandneues Dropdown-Menü hinzuzufügen. Dieser Unterschied ist wahrscheinlich wichtig – ich spreche hier davon, in einem Plugin neue Dinge zu tun, die im Discourse-Codebase noch nicht umgesetzt sind, und die Frage ist, ob man mit Discourse-Methoden oder einem separaten Add-on beginnen sollte.
Oft haben Sie gar keine andere Wahl. Wenn ich beispielsweise ein benutzerdefiniertes Feld für Themen hinzufügen möchte, würde ich immer auf den vorgefertigten Methoden und dem Code von Discourse aufbauen.
Aber wenn es sich um eine gezielte Funktionalität handelt – wie ein Dropdown-Menü für einen neuen Zweck – befinde ich mich bereits in einer Situation, in der ich, wenn ich die Discourse-Methoden verwende, diese an Dinge anpassen müsste, für die sie nicht vorgesehen waren.
Option 1: Ich könnte versuchen, den select-kit-Code, den ich beispielsweise im category-chooser sehe, an einer neuen Stelle einzufügen (die nichts mit Kategorien zu tun hat), und ihn dann so anzupassen, dass er das tut, was ich vom Dropdown-Menü erwarte, statt Kategorien auszuwählen. Das ist die Aufgabe, die ich zuvor als knifflig beschrieben habe.
Und es könnte schwierig zu warten sein – denn wenn das Discourse-Team etwas daran ändert, wie der select-kit-Code im category-chooser funktioniert, könnte das auch mein neu angepasstes Dropdown-Menü beeinflussen, und zwar auf unerwartete Weise (da ich es so angepasst habe, dass es sich leicht von der tatsächlichen Kategorie-Auswahl unterscheidet).
Option 2: Ich könnte etwas aus Ember einfügen, das robust ist, aber auch so gestaltet wurde, dass es sich anpassen lässt, und bei dem ich relativ klar erkennen kann, wie der Code tatsächlich funktioniert. In diesem Fall könnte ich zwar coole neue Funktionen verpassen, die Discourse möglicherweise zu seinen Dropdown-Menüs hinzufügt, aber ich könnte leichter den Überblick darüber behalten, wie mein Dropdown-Menü funktioniert. Das ist also wahrscheinlich die beste Option, meiner Meinung nach, falls dies möglich ist.
Option 3: Es komplett von Grund auf neu programmieren. Dorthin tendiere ich oft am Ende. Wenn die Programmierung abgeschlossen ist, ist es schön, Code zu haben, den ich vollständig verstehe und anpassen kann. Aber natürlich dauert es länger, und (zumindest die ersten Versionen) sind wahrscheinlich nicht so leistungsfähig und robust wie das, was das Discourse-Team oder das Ember-Team entwickelt haben.