Пока что у нас есть эти технические прототипы:
1- https://wordpress.github.io/gutenberg/tinymce-per-block/
2- https://wordpress.github.io/gutenberg/tinymce-single/ (одиночный TinyMCE, неконтролируемый, без грамматики, парсинг HTML)
tinymce.getContent
(Не стесняйтесь добавлять сюда любой другой технический прототип)
Я создаю эту проблему, чтобы мы могли сравнить плюсы и минусы каждого подхода, чтобы помочь нам решить, какой подход мы выберем для реализации.
Вот мои впечатления об этих двух прототипах:
Плюсы:
Минусы:
Плюсы:
Минусы
На основе этого экспериментального прототипа https://github.com/WordPress/gutenberg/pull/113 я попытался использовать смешанный подход, в котором мы используем TinyMCE в качестве оболочки, но повторно отображаем его содержимое на основе изменений состояния. После некоторого исследования этот подход похож на попытку воссоздать DraftJS или ProseMirror. И я не думаю, что это правильный способ использовать TinyMCE.
Спасибо за создание этого билета.
При сравнении нам также следует подумать о № 3, поскольку это, кажется, зависит от того, какой подход мы выберем.
Я думаю, что Prototype 2 - это правильный путь, хотя это может быть больше проблем, потому что он потребует намного больше работы TinyMCE, в конечном итоге это, вероятно, будет лучшим подходом на данный момент.
Сложнее повторно использовать блоки вне редактора?
Я думаю, что это не будет недостатком для Prototype 2, если API для определения типов блоков и типов управления предоставляет достаточно данных для использования чего-то другого, кроме TinyMCE. Я думаю, нам следует разработать API для определения типа блока / типа управления, который будет использоваться для загрузки сильно настраиваемого экземпляра TinyMCE. Данные из типа блока / типа управления также могут быть использованы для питания чего-то еще в будущем.
Несмотря на то, что это, вероятно, неприятно, Prototype 2 отражает большую часть того, как уже работает WordPress, и TinyMCE многое делает, что для меня делает его очень разумным путем вперед.
Самый полезный комментарий
Вот мои впечатления об этих двух прототипах:
Прототип 1:
Плюсы:
Минусы:
Prototype 2:
Плюсы:
Минусы
На основе этого экспериментального прототипа https://github.com/WordPress/gutenberg/pull/113 я попытался использовать смешанный подход, в котором мы используем TinyMCE в качестве оболочки, но повторно отображаем его содержимое на основе изменений состояния. После некоторого исследования этот подход похож на попытку воссоздать DraftJS или ProseMirror. И я не думаю, что это правильный способ использовать TinyMCE.