HTML Builder: визуальный конструктор HTML-структур на Vue 3
- воскресенье, 29 июня 2025 г. в 00:00:05
Привет, Хабр! Сегодня хочу представить вам HTML Builder — визуальный редактор HTML-структур с drag-and-drop интерфейсом, который я разрабатываю как часть библиотеки нестилизованных компонентов vue-dnd-kit/components (по аналогии с shadcn). Проект находится в стадии бета-тестирования зачаточном виде, и мне бы хотелось получить обратную связь от сообщества разработчиков и дизайнеров.
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 находится в очень ранней бета-версии с минимальным набором функций. Это скорее прототип или демонстрация концепции, который позволяет оценить базовые возможности и взаимодействие с пользователем. Тем не менее, даже в этой минималистичной версии можно получить представление о том, как компонент выглядит и работает.
Поскольку проект находится в стадии активной разработки, мне бы хотелось получить обратную связь от сообщества разработчиков и дизайнеров. Особенно интересны идеи по улучшению UI/UX:
Что можно улучшить в интерфейсе?
Каких возможностей не хватает?
Как можно сделать опыт использования более интуитивным?
Есть ли проблемы с производительностью или отзывчивостью интерфейса?
Какие компоненты стоит добавить в палитру?
В ближайших планах:
Улучшение UI/UX на основе ваших отзывов
Добавление шаблонов и пресетов для быстрого старта
Экспорт созданной структуры в чистый HTML/CSS код
Поддержка кастомных стилей и классов
История изменений с возможностью отмены/повтора действий
Расширение палитры компонентов
Демо HTML Builder – попробуйте прямо сейчас
GitHub репозиторий – исходный код и документация
Vue DnD Kit – библиотека, на базе которой создан компонент
Буду рад любым комментариям, вопросам и предложениям! Давайте вместе сделаем этот инструмент еще лучше. Спасибо за внимание!
P.S. Если вы хотите принять участие в разработке проекта или у вас есть интересные идеи по улучшению — не стесняйтесь связываться со мной через GitHub, Telegram или комментарии к этой статье.