Добро пожаловать в документацию om-data-mapper! Этот каталог содержит исчерпывающие руководства как для пользователей, так и для контрибьюторов.
- Руководство по использованию валидации - Полное руководство по использованию модуля валидации
- Доступные валидаторы и декораторы
- Функции валидации (validate, validateSync и др.)
- Пользовательские валидаторы
- Вложенная валидация
- Группы валидации
- Лучшие практики и примеры
- Руководство по использованию трансформации - Полное руководство по использованию модуля трансформации
- Decorator API (рекомендуется для новых проектов)
- API совместимости с class-transformer (для миграции)
- Декораторы трансформации (@Map, @MapFrom, @Transform и др.)
- Функции трансформации (plainToInstance, plainToClass и др.)
- Вложенные трансформации
- Распространённые паттерны и примеры
- Руководство по миграции с class-transformer
- Внутреннее устройство JIT валидации - Глубокое погружение в JIT-компиляцию валидации
- Компоненты архитектуры
- Система хранения метаданных
- Стратегия генерации кода
- Техники оптимизации
- Характеристики производительности
- Интеграция пользовательских валидаторов
- Отладка и профилирование
- Внутреннее устройство JIT трансформации - Глубокое погружение в JIT-компиляцию трансформации
- Компоненты архитектуры
- Хранение метаданных (на основе Symbol vs WeakMap)
- Стратегия генерации кода
- Генерация безопасного доступа к свойствам
- Стратегии обработки ошибок
- Техники оптимизации
- Характеристики производительности
- Сравнение с BaseMapper
Если вы новичок в om-data-mapper, начните здесь:
- Валидация: Прочитайте Руководство по использованию валидации
- Трансформация: Прочитайте Руководство по использованию трансформации
Если вы хотите понять внутреннее устройство или внести вклад:
- Внутреннее устройство валидации: Прочитайте Внутреннее устройство JIT валидации
- Внутреннее устройство трансформации: Прочитайте Внутреннее устройство JIT трансформации
- ✅ Установка и настройка
- ✅ Все доступные валидаторы с примерами
- ✅ Функции валидации (асинхронные и синхронные)
- ✅ Пользовательские валидаторы
- ✅ Вложенная валидация
- ✅ Группы валидации и условная валидация
- ✅ Настройка сообщений об ошибках
- ✅ Лучшие практики
- ✅ Миграция с class-validator
- ✅ Два API: Decorator API и Compatibility API
- ✅ Все декораторы трансформации с примерами
- ✅ Функции трансформации
- ✅ Вложенные трансформации
- ✅ Распространённые паттерны (ответы API, данные форм и др.)
- ✅ Руководство по устранению неполадок
- ✅ Советы по производительности
- ✅ Миграция с class-transformer
- ✅ Обзор архитектуры
- ✅ Хранение метаданных с использованием Symbol
- ✅ Реестр валидаторов и кэширование
- ✅ Процесс JIT-компиляции
- ✅ Генерация кода для синхронной и асинхронной валидации
- ✅ Техники оптимизации (кэширование, встраивание и др.)
- ✅ Бенчмарки производительности
- ✅ Интеграция пользовательских валидаторов
- ✅ Отладка сгенерированного кода
- ✅ Обзор архитектуры
- ✅ Две системы хранения метаданных
- ✅ Процесс JIT-компиляции
- ✅ Стратегии генерации кода
- ✅ Безопасный доступ к свойствам с optional chaining
- ✅ Обработка ошибок (безопасный vs небезопасный режим)
- ✅ Техники оптимизации
- ✅ Бенчмарки производительности
- ✅ Сравнение с class-transformer
- ✅ Отладка сгенерированного кода
→ Начните с Руководства по использованию валидации
→ Начните с Руководства по использованию трансформации
→ Прочитайте раздел "Миграция с class-validator" в Руководстве по использованию валидации
→ Прочитайте раздел "Миграция с class-transformer" в Руководстве по использованию трансформации
→ Прочитайте Внутреннее устройство JIT валидации и Внутреннее устройство JIT трансформации
→ Прочитайте всю документацию по внутренней архитектуре, затем ознакомьтесь с руководством по внесению вклада в основном репозитории
- В 10 раз быстрее, чем class-validator
- 100% совместимость API - прямая замена
- Без зависимостей - не требуется reflect-metadata
- JIT-компиляция для максимальной производительности
- Поддержка пользовательских валидаторов
- Вложенная валидация с полной типобезопасностью
- В 10 раз быстрее, чем class-transformer
- Два мощных API - Decorator API и Compatibility API
- 100% совместимость с class-transformer
- Без зависимостей - не требуется reflect-metadata
- JIT-компиляция для максимальной производительности
- Типобезопасность с полной поддержкой TypeScript
Оба модуля используют JIT-компиляцию для достижения исключительной производительности:
| Тип валидации | class-validator | om-data-mapper | Ускорение |
|---|---|---|---|
| Простая (1 поле) | ~50K оп/сек | ~500K оп/сек | 10x |
| Сложная (10 полей) | ~10K оп/сек | ~100K оп/сек | 10x |
| Вложенные объекты | ~5K оп/сек | ~50K оп/сек | 10x |
| Тип трансформации | class-transformer | om-data-mapper | Ускорение |
|---|---|---|---|
| Простое отображение | 326K оп/сек | 3.2M оп/сек | 10x |
| Сложные трансформации | 150K оп/сек | 1.5M оп/сек | 10x |
| Вложенные объекты | 80K оп/сек | 800K оп/сек | 10x |
- Используйте TypeScript - Полная типобезопасность и лучший опыт разработки
- Переиспользуйте экземпляры - Мапперы и валидаторы компилируются один раз
- Включите строгий режим - Выявляйте ошибки на ранних этапах
- Читайте руководства - Исчерпывающие примеры для распространённых сценариев
- Используйте validateSync, когда не нужны асинхронные валидаторы
- Используйте группы валидации для различных сценариев
- Создавайте пользовательские валидаторы для сложной бизнес-логики
- Используйте @IsOptional() для необязательных полей
- Выбирайте правильный API - Decorator API для новых проектов, Compatibility API для миграции
- Переиспользуйте экземпляры мапперов - Используйте createMapper() или getMapper()
- Используйте @MapNested() для вложенных объектов
- Включайте небезопасный режим для максимальной производительности, когда данные доверенные
Мы приветствуем вклад! Если вы нашли проблемы или хотите улучшить документацию:
- Прочитайте документацию по внутренней архитектуре, чтобы понять систему
- Ознакомьтесь с руководством по внесению вклада в основном репозитории
- Отправляйте issues или pull requests на GitHub
Этот проект лицензирован под лицензией MIT.
- Репозиторий GitHub: https://github.com/Isqanderm/data-mapper
- Пакет NPM: https://www.npmjs.com/package/om-data-mapper
Если у вас есть вопросы или нужна помощь:
- Проверьте руководства в документации
- Поищите в существующих issues на GitHub
- Создайте новый issue с подробным описанием
Приятного кодирования! 🚀