Знаком ли ты с конструкторами лендингов с возможностью редактирования блоков и текста?
Что проверяют
Работали ли вы с продуктом, где страницы собираются из блоков, и с какой стороны: как пользователь Tilda или Webflow или как разработчик, который такой редактор делает. Спрашивают компании со своим конструктором или с маркетингом, который хочет править лендинги без разработчиков. Следом просят набросать модель данных для блоков.
Как отвечать
Разделите ответ на две части.
Опыт использования: какие сервисы (Tilda, Webflow, Framer) и что делали: собирали страницы, вставляли свой код через HTML-блоки, подключали формы и аналитику, упирались в ограничения.
Опыт разработки для фронтенда весомее. Каркас:
- модель данных: страница хранится как массив блоков в JSON, у каждого
type,idиprops. Рендер берёт компонент из реестра поtype, поэтому новый блок добавляется без переписывания страницы; - редактирование текста: не голый
contenteditable, а готовый движок: TipTap (поверх ProseMirror), Lexical, Slate. Хранить лучше структурированный документ, а не HTML, иначе ввод придётся санитизировать от XSS; - перестановка блоков: drag and drop на dnd-kit или похожей библиотеке, с поддержкой клавиатуры;
- готовые решения: headless CMS с блочными полями (Strapi, Payload, Sanity, Storyblok), визуальные редакторы вроде GrapesJS или Puck для React;
- скорость страницы: блоки рендерятся на сервере или статически, чтобы лендинг быстро грузился и индексировался, а превью в редакторе совпадает с продом.
Назовите свой пример: какие блоки делали, сколько их в библиотеке, что стало быстрее для маркетинга. Цифры ваши. Если работали только как пользователь, скажите честно и покажите, как спроектировали бы схему блоков.
Где спотыкаются
Перечисляют Tilda и Wix и на этом останавливаются. Для фронтенд-вакансии важнее понимание, как такой редактор устроен внутри.
Предлагают хранить отредактированный HTML и выводить через dangerouslySetInnerHTML без санитизации. Это прямой путь к XSS.
Забывают про версионирование схемы блоков: поменяли props у блока, и старые страницы в базе ломаются без миграции данных.