Gutenberg: Vergleichen Sie die verschiedenen technischen Ansätze

Erstellt am 23. Feb. 2017  ·  3Kommentare  ·  Quelle: WordPress/gutenberg

Bisher haben wir diese technischen Prototypen:

1- https://wordpress.github.io/gutenberg/tinymce-per-block/

  • Multi-TinyMCE
  • Gesteuert ( Zustand -> Rendern -> Ereignis -> Zustand -> Rendern )
  • Der Staat wird als Objekt dargestellt
  • Grammatik verwenden

2- https://wordpress.github.io/gutenberg/tinymce-single/ (Single TinyMCE, unkontrolliert, keine Grammatik, HTML-Parsing)

  • Einzelnes globales TinyMCE
  • Unkontrolliert ( state -> render -> event -> newState )
  • Der Zustand ist ein einfacher String, der den gesamten HTML-Code enthält
  • Die Grammatik wird nicht im Editor verwendet, aber wir können möglicherweise die Grammatikkommentare hinzufügen, während wir tinymce.getContent aufrufen

(Fühlen Sie sich frei, hier einen anderen technischen Prototyp hinzuzufügen)

Ich erstelle dieses Thema, damit wir die Vor- und Nachteile jedes Ansatzes vergleichen können, um uns bei der Entscheidung zu helfen, welchen Ansatz wir implementieren möchten.

[Type] Question

Hilfreichster Kommentar

Hier sind meine Gefühle zu diesen beiden Prototypen:

Prototyp 1:

Vorteile:

  • Scheint einfacher zu verwenden Blöcke außerhalb des Editor-Kontexts
  • Ich habe eine persönliche Vorliebe dafür, den Zustand als Objekt zu haben, externe Manipulation des Zustands (Aktionen, die nicht in TinyMCE integriert sind) scheinen einfacher zu erreichen.

Nachteile:

  • Eine Mehrfachblockauswahl scheint unmöglich zu erreichen. Strg+A ist pro Block.

Prototyp 2:

Vorteile:

  • Multiblock-Auswahl
  • Es ist einfacher, ein Volltext-UI-Feeling zu erreichen

Nachteile

Basierend auf diesem experimentellen Prototyp https://github.com/WordPress/gutenberg/pull/113 habe ich versucht, an einem gemischten Ansatz zu arbeiten, bei dem wir TinyMCE als Wrapper verwenden, aber seinen Inhalt basierend auf Zustandsänderungen neu rendern. Nach einiger Erkundung fühlt sich dieser Ansatz wie der Versuch an, DraftJS oder ProseMirror neu zu erstellen. Und ich glaube nicht, dass es der richtige Weg ist, TinyMCE zu verwenden.

Alle 3 Kommentare

Hier sind meine Gefühle zu diesen beiden Prototypen:

Prototyp 1:

Vorteile:

  • Scheint einfacher zu verwenden Blöcke außerhalb des Editor-Kontexts
  • Ich habe eine persönliche Vorliebe dafür, den Zustand als Objekt zu haben, externe Manipulation des Zustands (Aktionen, die nicht in TinyMCE integriert sind) scheinen einfacher zu erreichen.

Nachteile:

  • Eine Mehrfachblockauswahl scheint unmöglich zu erreichen. Strg+A ist pro Block.

Prototyp 2:

Vorteile:

  • Multiblock-Auswahl
  • Es ist einfacher, ein Volltext-UI-Feeling zu erreichen

Nachteile

Basierend auf diesem experimentellen Prototyp https://github.com/WordPress/gutenberg/pull/113 habe ich versucht, an einem gemischten Ansatz zu arbeiten, bei dem wir TinyMCE als Wrapper verwenden, aber seinen Inhalt basierend auf Zustandsänderungen neu rendern. Nach einiger Erkundung fühlt sich dieser Ansatz wie der Versuch an, DraftJS oder ProseMirror neu zu erstellen. Und ich glaube nicht, dass es der richtige Weg ist, TinyMCE zu verwenden.

Vielen Dank für die Erstellung dieses Tickets.

Beim Vergleich sollten wir auch an #3 denken, da dies davon abhängig zu sein scheint, welchen Ansatz wir wählen.

Ich denke, Prototype 2 ist der richtige Weg, auch wenn es mühsamer sein könnte, weil es viel mehr TinyMCE-Arbeit beinhalten wird, letztendlich wäre es wahrscheinlich der beste Ansatz für den Moment.

Ist es schwieriger, die Blöcke außerhalb des Editors wiederzuverwenden?

Ich denke, das wäre kein Nachteil für Prototype 2, solange die API zum Definieren von Blocktypen und Kontrolltypen genügend Daten bereitstellt, um etwas anderes als TinyMCE zu verwenden. Ich denke, wir sollten eine API zur Definition von Blocktyp/Steuerungstyp entwickeln, die verwendet wird, um eine hochgradig benutzerdefinierte TinyMCE-Instanz zu füttern. Daten vom Blocktyp/Kontrolltyp könnten auch verwendet werden, um in Zukunft möglicherweise etwas anderes zu füttern.

So sehr es wahrscheinlich nicht schmackhaft ist, Prototype 2 spiegelt das meiste wider, wie WordPress bereits funktioniert und TinyMCE macht viel, was es für mich zu einem sehr vernünftigen Weg nach vorne macht.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen