Wann Themes/Plugins auf `.gjs` umstellen?

Ich denke, wir brauchen eine allgemeine Methode, um dies zu tun, die themenkomponentenunabhängig ist – so wie wir es jetzt haben.

Ich habe eine weitere Themenkomponente, die diese Technik verwendet:

Das sind also mindestens zwei von meiner Seite, und es könnten noch mehr sein.

3 „Gefällt mir“

Ich stimme zu. Ich habe eine Sammlung von Blockkomponenten erstellt, die jeweils eigenständig sind, anstatt in einem einzigen Paket gebündelt zu werden: Blocks · GitLab.

Im Moment kann ich diese Blöcke mit meiner Homepage Blocks-Komponente auf einer speziellen Homepage platzieren, genauso wie ich sie mit Right Sidebar Blocks oder auf Bars verwenden kann.

Ich habe kürzlich ein Spiel mit dem Central-Thema gemacht, bei dem ich ein benutzerdefiniertes Sidebar-Layout benötigte. Ich konnte einfach ein Block-Framework für eine benutzerdefinierte Sidebar erstellen und Blockkomponenten darauf platzieren: https://central.kostka.studio (sowie die Powered-by-discourse-Komponente in der Sidebar platzieren, indem ich sie einfach nach Namen referenziere).

Eigenständige Blockkomponenten sind wirklich das nützlichste Werkzeug, das ich derzeit für den flexiblen und wartbaren Aufbau von Client-Anpassungen habe. Es wäre großartig, einen allgemeinen Weg zur Unterstützung dieses Ansatzes zu haben.

3 „Gefällt mir“

Ich möchte dies erneut ansprechen, da ich versuche, den besten Weg zur Verwaltung meiner Komponenten herauszufinden. Derzeit sehe ich zwei Optionen, die beide erhebliche Nachteile haben: Ich könnte eine Registry pro Themenkomponente erstellen, die Blöcke rendert, aber das widerspricht irgendwie dem gesamten modularen Zweck. Oder ich füge einen global über ein Plugin hinzu, aber dann werden meine Komponenten von der Installation dieses Plugins abhängig.

Es scheint also, dass eine globale Blockregistrierungs-API im Kern wirklich helfen würde. Etwas, das Themenkomponenten verwenden könnten, um das Rendern von Blöcken aufzurufen und auch neue Blöcke zu registrieren.

Ich liebe die Arbeit mit dem Blockansatz, weil er es mir ermöglicht, Bedenken zwischen dem App-Layout und dem Komponenteninhalt zu trennen. Die Blockkomponente kümmert sich nur um das Rendern ihres Inhalts und wird dann von einer anderen Komponente in der App gerendert. Ich kann die gesamte Routen- und Outlet-Logik aus der Blockkomponente entfernen und denselben Block problemlos mehrmals in einem Layout und sogar in der gesamten App wiederverwenden.

Ich finde, das macht alles schlanker und wiederverwendbarer und ist insgesamt ein eleganter Ansatz. Eine solide Unterstützung für dieses Muster in Discourse wäre großartig.

4 „Gefällt mir“