Это был дождливый летний день в июне 2022 года, когда я понял, как указал мой коллега, что Yup добавляет весь Lodash в кодовую базу при установке npm. Меня это очень удивило, потому что Yup кажется стандартом для проверки формы. Что неудивительно, есть замена под названием Nope Validator с почти идентичным API, но размером микро. Вот параллельное сравнение двух библиотек на bundlephobia.com, я собираюсь включить скриншоты для исторических целей.

Вы можете найти каждую библиотеку по следующей ссылке, чтобы увидеть, где они находятся сегодня. Вам придется искать их по имени, чтобы появилась самая последняя версия: https://bundlephobea.com.

Практический тест: да или нет

Как вы видите выше, на бумаге Nope кажется очевидным выбором, но работает ли он? Недавно я работал над проектом, в котором мы использовали Preact с формой React Hook Form с проверкой Yup. Мне очень понравился рабочий процесс, и я был расстроен, узнав, что Yup экспортирует весь Lodash. Я решил, что сначала попытаюсь использовать валидацию Nope в своем побочном проекте Valmon. По сути, это панель инструментов для мониторинга времени безотказной работы валидаторов во всех блокчейнах Cosmos. По сути, валидаторы — это майнеры для Cosmos.

Я решил, что страница настроек будет идеальным первым кандидатом на переписывание с использованием React Hook Form с проверкой Nope. Текущая реализация использовала обновления состояния в памяти для управления входными значениями. Хотя это всего лишь один ввод, после изучения React Hook Form использовать состояние для ввода формы все равно было отвратительно.

Вы можете увидеть переписанную страницу здесь: https://github.com/CosmosSpaces/stivalidatormon/blob/main/src/pages/settings.tsx

Как видите, теперь используется нативная форма, и с моей точки зрения ее намного проще понять. Больше не нужно обновлять состояние и анализировать входное значение в число, когда вам нужно число. Никакая проверка не преобразует значение для вас, сэкономив столько кода и работы! Честно говоря, Yup тоже это делает, но с немного большим багажом.

Победитель

Я думаю, понятно, что, на мой взгляд, Nope кажется лучшей библиотекой на данный момент. Я собираюсь продолжить работу с Nope, чтобы увидеть, не столкнусь ли я с какими-либо ограничениями, которые заставят меня развернуться и вернуться к Yup. Если это когда-нибудь произойдет, я опубликую обновление этой статьи, чтобы она оставалась актуальной.

Привет🍻

Ссылки