javascript42
Главная
Все учебники
Блог
Учебник Ajv
Введение
Что такое Ajv и зачем нужна валидация
История развития библиотеки
Сравнение с альтернативами
Установка и первый запуск
Основы JSON Schema
Структура схемы
Базовые типы данных
Ключевое слово type
Nullable и опциональные поля
Комбинирование типов
Валидация строк
Ограничения длины
Паттерны и регулярные выражения
Форматы строк
Перечисления
Валидация чисел
Диапазоны значений
Кратность числа
Целые и вещественные числа
Эксклюзивные границы
Валидация массивов
Ограничения по длине
Валидация элементов
Уникальность элементов
Кортежи и префиксные элементы
Дополнительные элементы
Валидация объектов
Обязательные свойства
Паттерны для имён свойств
Зависимости между свойствами
Ограничение количества свойств
Запрет дополнительных свойств
Композиция схем
allOf для пересечения
anyOf для объединения
oneOf для взаимоисключения
not для отрицания
Практические паттерны композиции
Переиспользование схем
Определения через $defs
Ссылки через $ref
Рекурсивные схемы
Внешние схемы
Условная валидация
Конструкция if-then-else
Зависимые схемы
Динамические требования
Настройка экземпляра Ajv
Опции конструктора
Режимы работы
Управление ошибками
Производительность
Работа с ошибками
Структура объекта ошибки
Типы ошибок
Форматирование сообщений
Локализация ошибок
Форматы данных
Встроенные форматы
Добавление собственных форматов
Асинхронные форматы
Валидация email, uri, date-time
Ключевые слова
Стандартные ключевые слова
Создание собственных ключевых слов
Макросы и шаблоны
Inline-компиляция
Асинхронная валидация
async/await паттерн
Удалённые схемы
Асинхронные форматы и ключевые слова
Обработка промисов
Компиляция и кеширование
Предварительная компиляция
Сериализация скомпилированных схем
Управление кешем
Оптимизация повторной валидации
JSON Schema Draft версии
Отличия между драфтами
Миграция между версиями
Выбор подходящей версии
Совместимость
Валидация TypeScript типов
Интеграция с TypeScript
Генерация типов из схем
JTD (JSON Type Definition)
Автодополнение и типобезопасность
Standalone валидаторы
Генерация автономного кода
Использование без Ajv
Оптимизация размера бандла
Производительность
Бенчмарки и профилирование
Оптимизация схем
Стратегии кеширования
Сравнение режимов работы
Интеграция с фреймворками
Express и middleware
Fastify схемы
Koa валидация
NestJS pipes
Валидация конфигураций
Файлы настроек приложения
Переменные окружения
CLI аргументы
Многоуровневые конфигурации
Валидация API
REST endpoints
GraphQL resolver inputs
WebSocket сообщения
RPC вызовы
Работа с большими данными
Стриминг валидация
Частичная валидация
Ленивая загрузка схем
Управление памятью
Безопасность
Защита от DoS через схемы
Валидация пользовательского ввода
Санитизация данных
Ограничения глубины и размера
Отладка и тестирование
Режим verbose
Отладка схем
Юнит-тесты для валидаторов
Тестирование граничных случаев
Миграция данных
Валидация перед миграцией
Трансформация под новые схемы
Откат изменений
Версионирование данных
Расширенные техники
Метасхемы
Динамическая генерация схем
Плагины и расширения
Кастомные error handler