Мне нужно создать редактор WYSI (более или менее) WYSI в браузере для определенного подмножества HTML. Это требует, чтобы элементы модели HTML могли быть украшены дополнительной разметкой для поддержки редактирования. Возможно, некоторые модели HTML-элементов должны быть полностью заменены с целью редактирования.
Я хочу, чтобы избежать преобразования между HTML-разметкой редактора и HTML-разметкой вывода, поскольку это оказалось очень подверженным ошибкам в предыдущем воплощении компонента.
Вместо этого я хочу чистое разделение модели и представления, предпочтительнее использовать одну из клиентских структур MVC, таких как React.js.
Как это можно достичь? До сих пор я придумал следующие идеи:
- Представьте модель в качестве DOM браузера и используйте ее в качестве модели для представлений, которые генерируют разметку (и поведение) редактора.
- Представьте модель, используя React virtual DOM (возможно ли это?)
- Сверните мое собственное представление модели, используя типы данных Javascript. Однако для этого потребуется написать синтаксический анализатор и сериализатор, которые мне очень хотелось бы избежать.
Как это делается в других компонентах редактора? Возможно ли, что этот подход возможен?
Изменить: Чтобы пояснить вариант использования немного больше, я не ищу архитектуру, которая поддерживает обычное редактирование встроенных элементов, таких как <strong>
, <a>
et al. но сочетание внутри-редактирования встроенных элементов (я рассматриваю возможность использовать что-то вроде CKEditor для этого), а также более структурные редактирование, например клонирование <div>
и макет <table>
, и перемещение их вокруг.