Vue AutoForm — компонент на Vue 3 (Composition API), который динамически строит форму на основе переданной JSON-схемы. Форма поддерживает основные типы полей и минимальную валидацию, а данные пользователя автоматически синхронизируются с реактивной моделью.
Компонент FormGenerator генерирует форму динамически по переданному JSON-объекту. Все изменения в полях формы реактивно отражаются в объекте данных, переданном через v-model.
- Текстовые поля:
text,email,password - Выпадающий список:
select(с массивом опций) - Чекбокс:
checkbox
Реализована минимальная валидация с поддержкой следующих правил:
required— обязательное полеminLength— минимальная длина строкиpattern— регулярное выражение для проверки формата
Валидация срабатывает при потере фокуса (blur) и отображает сообщения об ошибках под соответствующими полями.
- Node.js (версия 16 или выше)
- npm или yarn
-
Установите зависимости:
npm install
-
Запустите dev-сервер:
npm run dev
Приложение будет доступно по адресу
http://localhost:5173(или другому порту, указанному Vite). -
Сборка для production (опционально):
npm run build
Посмотреть в режиме реального времени
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
type |
string |
✅ | Тип поля: text, email, password, select, checkbox |
label |
string |
✅ | Подпись поля |
model |
string |
✅ | Уникальное имя поля в модели данных |
required |
boolean |
❌ | Обязательное поле (по умолчанию false) |
minLength |
number |
❌ | Минимальная длина (только для строковых полей) |
pattern |
string |
❌ | Регулярное выражение для валидации |
options |
array |
✅ для select |
Массив опций для выпадающего списка |
placeholder |
string |
❌ | Подсказка в поле ввода |
vue-autoform/
├── src/
│ ├── components/
│ │ └── FormGenerator.vue # Основной компонент формы
│ ├── composables/
│ │ └── useValidation.js # Композабл для валидации
│ ├── App.vue # Демо-приложение
│ ├── main.js # Точка входа
│ └── style.css # Глобальные стили
├── package.json
├── vite.config.js
└── README.md
- ✅ Реактивность: Данные формы автоматически синхронизируются с объектом через
v-model - ✅ Валидация: Проверка полей при потере фокуса с отображением ошибок
- ✅ Composition API: Использование современного подхода Vue 3
- ✅ Типизация: Поддержка различных типов полей с соответствующими HTML-элементами
- ✅ Адаптивность: Базовая адаптивная верстка для мобильных устройств
- ✅ UX: Плавные анимации появления ошибок и визуальная обратная связь
Демо-приложение (App.vue) содержит пример использования компонента с JSON-схемой из технического задания. Вы можете редактировать схему прямо в интерфейсе и видеть, как форма обновляется динамически.
- Vue 3 (Composition API)
- Vite (сборщик)
- Vanilla CSS (стилизация)
Проект создан в рамках тестового задания.