Comments 5
Я немножко не настоящий джаваскриптер, но слово изоморфизм имеет отношение к одному моему проекту. Грубо говоря, 2 массива или множества a и b - изоморфны, если у них одинаковое количество элементов и существует способ установить какие-то отношения между каждым a[i] и b[i]. Так вот, почему вы поставили в заголовок это слово, но не обосновали его? Мне бы хотелось только увидеть в вашем творении изоморфизм, вопросы валидации и остального мне не важны.
Словом 'isomorphic' в названии библиотеки я хотел подчеркнуть то, что использовать одни и те же валидации можно на клиенте и на сервере. Пишем код валидации один раз, и этот код используется и там и там одинаково.
Наверное, такой термин, как "изоморфный Javascript" уже не используется.
Из Википедии, свободной энциклопедии
Не путать с изоморфизмом.
Изоморфный JavaScript, также известный как универсальный JavaScript, описывает приложения JavaScript, которые работают как на клиенте, так и на сервере.
Выбрать название оказалось не так то просто. Все более менее лаконичные названия, которые приходили мне в голову, оказались либо заняты на NPM либо были названиями компаний, работающих в сфере аккредитации, сертификации и т.д. Я остановился на этом. А позже, когда публиковал очередную версию библиотеки, оказалось, что точно с таким же названием тоже существовал когда-то проект. Но менять название я уже не стал. Так что, что имеем, то имеем.
Я активно пишу на Next js. Поэтому предпочитаю zod в паре с react-hook-forms. Я построил удобную интеграцию zod с i18n, чтобы он сразу вернул ошибки в нужном языке. А RHF позаботится с вставлением zod ошибок в нужные поля.
Подскажите, как декларативно (также как в 1 примере), можно проверить 2 поля пароля на равенство (form.password === form.password2) ?
Например, вот так:
Скрытый текст
form.addEventListener(
'input',
Validation.group(
// здесь могут быть валидации других полей
// и/или группы валидаций
// ...
Validation.glue(
Validation(form.password),
Validation(form.password2),
)
.constraint((val1, val2) => val1 === val2)
.validated(applyOutline(form.password))
.validated(applyOutline(form.password2))
)
);
Здесь обводка вокруг каждого поля отражает состояние валидности "склеенной" группы.
Состояние валидности группы зависит от каждой валидации в группе. Группа может содержать другие группы.
А еще вот сдесь есть пример валидации паролей, со схемой, поясняющей работу.
Вот тут еще один пример с паролями.
А еще вот здесь пример формы входа и формы регистрации с видео объяснением.
Вся докоментация пока только на англ.языке.
Isomorphic-validation — Javascript библиотека, облегчающая валидацию пользовательского ввода