Ich spielte mit CKEDitor5, und ich versuchte, einen benutzerdefinierten Datenprozessor zu erstellen. Ich möchte das Modell in der toData
Umwandlung verwenden, aber die Methode wird mit dem view/DocumentFragment
Objekt aufgerufen. Meine Frage ist also, wie kann ich das in ein model/DocumentFragment
Objekt umwandeln (oder wie man von einem Datenprozessor auf das Modell zugreift).CKEditor5 verwenden Modell in benutzerdefinierten Datenprozessor
aktualisiert (da es nicht in einen Kommentar passen): Lassen Sie mich versuchen, besser zu erklären, was genau ich versuche zu tun (oder ich habe schon so weit) in etwas mehr Detail. Ich habe herausgefunden, wie man das Modell selbst benutzen kann, aber das schien eine schlechte Lösung zu sein, wie Sie es auch gezeigt haben.
Also im Grunde möchte ich eine DataProcessor
erstellen, um die Editor-Daten in BBCode zu konvertieren, was vernünftig genug klingt, denke ich.
Auf der einen Seite ist die toView
Methode einfach, da die BBCode zu HTML-Konvertierung angenommen werden kann (in meinem Fall bereits implementiert). Und aus HTML scheint es trivial zu sein, die Editor-Daten zu laden (nach dem gleichen Prozess wie der Markdown-Prozessor).
Auf der anderen Seite scheint es einfacher zu BBCode von den Modelldaten als von der Ansicht zu konvertieren. Hauptsächlich, weil das view/DocumentFragment
Objekt und der Rest der View-Struktur so ziemlich nur eine weitere Repräsentation des DOM oder HTML ist. Ich interessiere mich nicht wirklich, ob fett ist <b>
oder <strong>
ich will nur wissen, ob der text
Knoten das bold
Attribut oder nicht hat.
Mit dem Modell hoffe ich, mit der Semantik und nicht mit der Darstellung in HTML zu arbeiten. Es erscheint ein wenig sinnlos, im Grunde alle HTML-Tags ihren BBCode-Äquivalenten zuzuordnen (selbst wenn CKE5 gute Arbeit leistet, konsistente HTML-Tags bereitzustellen). Aus meiner Sicht macht die Verwendung des Modells mehr Sinn. Die Umwandlung von einer semantischen Repräsentation in ein "Datenformat" ist einfacher als die Konvertierung in ein "Datenformat" (Ansichtsbaum, DOM, HTML, Morsecode) und dann die Erstellung einer "Repräsentationskarte".
Lange Zeit war es die Schwierigkeit, von HTML zu BBCode zu konvertieren, was uns daran hinderte, RTEs oder WYSIWYG-Editoren zu verwenden. Jetzt hat CKE5 ein Modell, das leicht zu konvertieren ist, da es nicht nur vom HTML-Format, sondern auch vom HTML-Editor unabhängig ist (dies kann nicht über den View-Tree gesagt werden, da es genau der HTML-Code ist) der Redakteur - zumindest ist es nicht das, was zufrieden stellbar produziert, aber immer noch nicht gut genug ist).
Auch: Ich habe gerade ein Plugin
, den die DataProcessor
setzt, wie das war, was die Markdown-Funktion Art auch tut (in der Dokumentation irgendwo). Ist das eine schlechte Idee?
Nochmals vielen Dank für Ihre Antwort.
Ich sehe Ihre Punkte. Ich würde denken, dass BBCode-Ausgabe genau das ist für die Ansicht -> DOM -> gewünschte Ausgabe-Konvertierung. Beachten Sie, dass der von Ihnen beschriebene Ansatz Nachteile hat, wenn es um die Erweiterung des Editors geht. Die Menge der Elemente von DOM oder View ist ziemlich stabil, also machst du deine Arbeit nur einmal. Model, OTOH, ist flexibel und jeder Entwickler könnte ein beliebiges Element finden, das in der View/DOM in eine komplexe Struktur umgewandelt werden könnte. Sie müssen modell-> BBCode-Konvertierung für jedes neue Plugin schreiben, das Sie einfügen werden. –
Beachten Sie auch, dass das Konvertieren des Modells schwierig ist und wir dafür mehrere Tools haben. Zum Beispiel sind Texte im Modell "flach", so dass Sie sie selbst in Tags aufteilen müssen. Ich schätze, alles, was ich zu sagen versuche, ist, dass Sie durch die Konvertierung des Modells in ein anderes Format die Arbeit, die andere bereits getan haben, mehr oder weniger wiederholen. –
Schließlich ist es in Ordnung, ein Plugin zu verwenden, um den Datenprozessor einzustellen. –