Привет, Хабр! Сегодня хочу представить вам HTML Builder — визуальный редактор HTML-структур с drag-and-drop интерфейсом, который я разрабатываю как часть библиотеки нестилизованных компонентов vue-dnd-kit/components (по аналогии с shadcn). Проект находится в стадии бета-тестирования зачаточном виде, и мне бы хотелось получить обратную связь от сообщества разработчиков и дизайнеров.
Что такое HTML Builder?
HTML Builder — это компонент для визуального создания и редактирования HTML-структур без необходимости писать код вручную. Это комплексное решение, которое включает в себя:
Рабочую область для визуального конструирования элементов
Палитру компонентов для быстрого добавления элементов на холст
Древовидный вид для удобного управления иерархией элементов
Панель свойств для тонкой настройки каждого элемента
Зачем это нужно?
В современной веб-разработке часто возникает потребность в инструментах, которые могут упростить процесс создания интерфейсов, особенно для людей, не имеющих глубоких знаний в HTML и CSS. HTML Builder может использоваться для:
Создания прототипов интерфейсов
Разработки визуальных редакторов для CMS
Создания конструкторов форм
Разработки шаблонов email-рассылок
Обучения основам HTML-вёрстки с визуальной обратной связью
Как это работает?
В основе HTML Builder лежит система drag-and-drop, реализованная с помощью библиотеки Vue DnD Kit. Пользователь может перетаскивать элементы из палитры на холст, настраивать их свойства, а также перемещать их в дереве элементов для изменения структуры документа.
Ключевые возможности:
-
Интуитивный drag-and-drop интерфейс
Перетаскивание элементов между любыми частями интерфейса
Визуальные подсказки при перетаскивании
Удобные горячие клавиши (Shift для перемещения, Esc для отмены выбора)
-
Структурированное дерево элементов
Визуализация иерархии документа
Возможность раскрывать/сворачивать узлы
Выбор элементов кликом по дереву
Скрытие/отображение элементов без удаления
Удаление элементов прямо из дерева
-
Панель свойств с множеством настроек
Размеры и позиционирование
Отступы и поля
Границы и фон
Настройки отображения
-
Палитра с готовыми компонентами
Базовые HTML-элементы (div, p, img, span)
Блоки для разметки страницы
Медиа элементы
Технические детали
HTML Builder создан на Vue 3 с использованием Composition API и TypeScript. Компонент входит в библиотеку нестилизованных UI-компонентов vue-dnd-kit/components, которая работает по принципу, схожему с shadcn — вы получаете компоненты с базовой функциональностью, но можете полностью настраивать их стили и поведение под свои нужды.
Простое использование
Установка в проект:
pnpm dlx @vue-dnd-kit/components add HTMLBuilder
Базовое использование:
<script setup lang="ts">
import { HTMLBuilderBase } from './components/HTMLBuilder';
</script>
<template>
<HTMLBuilderBase />
</template>
Помогите сделать HTML Builder лучше!
Важно отметить, что на данный момент HTML Builder находится в очень ранней бета-версии с минимальным набором функций. Это скорее прототип или демонстрация концепции, который позволяет оценить базовые возможности и взаимодействие с пользователем. Тем не менее, даже в этой минималистичной версии можно получить представление о том, как компонент выглядит и работает.
Поскольку проект находится в стадии активной разработки, мне бы хотелось получить обратную связь от сообщества разработчиков и дизайнеров. Особенно интересны идеи по улучшению UI/UX:
Что можно улучшить в интерфейсе?
Каких возможностей не хватает?
Как можно сделать опыт использования более интуитивным?
Есть ли проблемы с производительностью или отзывчивостью интерфейса?
Какие компоненты стоит добавить в палитру?
Планы по развитию
В ближайших планах:
Улучшение UI/UX на основе ваших отзывов
Добавление шаблонов и пресетов для быстрого старта
Экспорт созданной структуры в чистый HTML/CSS код
Поддержка кастомных стилей и классов
История изменений с возможностью отмены/повтора действий
Расширение палитры компонентов
Полезные ссылки
Демо HTML Builder – попробуйте прямо сейчас
GitHub репозиторий – исходный код и документация
Vue DnD Kit – библиотека, на базе которой создан компонент
Буду рад любым комментариям, вопросам и предложениям! Давайте вместе сделаем этот инструмент еще лучше. Спасибо за внимание!
P.S. Если вы хотите принять участие в разработке проекта или у вас есть интересные идеи по улучшению — не стесняйтесь связываться со мной через GitHub, Telegram или комментарии к этой статье.
Комментарии (7)
TechnicalMan94
28.06.2025 14:47.Помню, когда-то делал сайты в adobe muse. Давно, и как был счастлив, когда научился справляться без этого дерьма. Ведь кодом лучше, проще, быстрее, чище оказалось. Чем десять кнопок жать, набрал 2 строки кода не глядя на монитор. Ну это уже сейчас так. В целом о Чем я?
Кому это нужно?
ZiZIGY Автор
28.06.2025 14:47Хз, у меня на проекте была кастомная cms на накст, и чтобы нас дизайнер не мучал с формами и шаблоном писем замутили ему такую штуку, и мы довольны были и дизайнер и бизнес. Там специчный кейс был.
elnights
Пока что там буквально ничего не работает.
Компоненты не отображаются на канвасе, изменение свойств DIV ни на что не влияет, а у других элементов (IMG, P и SPAN) свойства вообще не редактируются. Да, там всего 4 типа элемента.
Перемещение элементов по дереву не работает, хотя курсор хаотично скачет между "move" и "pointer".
Скрее похоже на продукт получасового вайб-кодинга(со статьёй включительно), чем на "комплексное решение в стадии бета-тестирования".
P.S. Тестировал в Chrome и Firefox
ZiZIGY Автор
Очень странно, но у меня все работает, + видимо вы не прочитали "обучалку" вначале
По поводу (IMG, P и SPAN) да я знаю, там докинуть просто свойства надо и все. Просто я щас +- разметил что то, а так как это unstyled компонент то я не совсем понимаю как юзеру его лучше отдать, чтобы ему было удобно редактировать его или пользоваться.
Я подобный редактор (но допиленный) делал в e-com в кастомной CMS, и он нормальный вышел, но тут речь именно о готовом большом модуле который я отдаю в папку.
Не совсем понимаю типо как заститилить его.
Где должен быть Drawer с опциями, или может быть вообще сделать редактирование и измение элемента через ПКМ (contextmenu) и тд тп, и чтобы это было еще совместимо со структурой юзера и компонентами.
Вообщем не совсем понимаю в каком направлении мне двигаться. И как раз таки хочу услушать это выложив такой "маленький прототип" потому что щас я начну делать, а потом не удобный компонент выйдет, и придется все переделывать (повезет если не с нуля), крч как то так.
А вот за вайб-коддинг обидно было.
RulenBagdasis
Согласен.
Во-первых, не работает примерно ничего. Элементы появляются в дереве, но не на канвасе, в дереве с ними ничего сделать нельзя, при этом. Галки не нажимаются, элементы не перемещаются, хотя курсор намекает на то, что должны. Ещё и бесячий анимированный фон канваса доставляет...
Во-вторых, человеку, который знает, что такое "div", и "display: inline-block" такой "конструктор" не нужен в принципе. А палитру компонентов я не обнаружил...