🔗 Ссылки: Valibot: valibot.dev/ 🎉 Курсы по TypeScript: purpleschool.ru/course/typescript 🎓 Мои курсы по разработке: purpleschool.ru 💬 Telegram канал с полезными советами: t.me/purple_code_channel
Где можно посмотреть примеры использования НЕ class-validator, а как раз таки чего-нибудь из yup, zod и т.п. для валидации на бэке? Везде class-validator.
Очень интересно. Спасибо. Я когда-то делал таблицу, для записи в базу хостнеймов с параметрами подключения, и там были разные условия, например, в хостнейме нельзя использовтаь символы двоеточния, кавычки разные, и вобще другие спецсимволы. А в пути к ключу ssh тоже чего-то там нельзя использовать, и порт ссш всегда должен быть числом и не больше 65к. Это приблизительно, вот сам функция, причем я по факту только учу эту тему, и писал ровно так, насколько у меня хватало понимания :) то есть скорее всего сделано через пень колоду, но эта функция работала и в целом вроде даже не плохо, возвращала false если там что-то было левое в ячейке: function isCellValid(cellValue, cellClass) { // Если ячейка редактируется через модальное окно и значение равно {{uploaded}}, возвращаем true. // Используется для загрузки ssh-key. if (isModalEdit && cellValue === '{{uploaded}}') { return true; } switch (cellClass) { case 'hostname': return /^[a-z0-9.+/-]+$/i.test(cellValue) && !/[!"'(){}\[\]@#$%^&*;]/.test(cellValue); case 'alias': case 'user': // Запрещены двоеточия, одинарные и двойные кавычки return !/[:"'"]/.test(cellValue); case 'ssh_key_path': return /^[a-z0-9.+/_-]+$/i.test(cellValue) && !/[!"'(){}\[\]@#$%^&*;]/.test(cellValue); case 'ssh_port': return Number.isInteger(+cellValue) && +cellValue >= 0 && +cellValue
Я как то не понял, это библиотека для валидации на бэке? Или для фронта тоже подходит? Я пока не очень в силен в JS, но вопрос валидации форм для меня крайне актуален ) Кстати как раз прохожу ваш курс, базовый JS =)
Круто) эта библиотека подходит как для фронта, так и для бека. На фронте она как раз имеет преимущество относительно других библиотек за счёт малого веса.
Эта библиотека умеет делать схему из типа/интерфейса? У zod, который громко называет себя typescript-first, такого нет, поэтому в случаях, когда тип уже создан (например, автоматически сгенерирован другим процессом), приходится вручную задавать схему и дублировать (а фактически схема даже больше типа) код.
Аааа, горшочек, не вари! Только вчера про zod узнали, а уже вырос его убийца. Было бы интересно сравнение, в чем таки zod сейчас выигрывает. Кроме как различными интеграциями от коммьюнити, например с тем же nest.
Хм. Когда мы интегрируем фронтенд со сторонней апишкой, которая в любой момент может поменяться - использование понятно. Но стоит ли заниматься подобной валидацией, если мы работаем с нашим бэком, которому мы доверяем?🧐
@@Ярослав-т2э9б Размер исходного бандла - это сейчас узкое место в разработке. Куча мобильных устройств тормозит из-за неумеренного использования зависимостей, быстро садится батарея и т.п..
@@un_defined А чего не 3.11, функции же совсем не расширяются? )) У меня в моем стареньком телефоне оперативы больше, чем в компе был хард, когда XP вышел, может поэтому? 😁
zod реально слишком жирный для фронтенда, когда надо всего лишь сделать схему и показать ошибки. Зод сейчас тянет кучу всего не нужного и насколько я понимаю веса добавляет возможность чейнинга в схемах
🔗 Ссылки:
Valibot: valibot.dev/
🎉 Курсы по TypeScript: purpleschool.ru/course/typescript
🎓 Мои курсы по разработке: purpleschool.ru
💬 Telegram канал с полезными советами: t.me/purple_code_channel
Спасибо, что делитесь интересными инструментами.
Пожалуйста!
Классный инструмент. Спасибо что делишься интересными новинками)
Пожалуйста!
Привет, а в production в NestJS, что используешь? Class-validator?
Сейчас да, чаще его
Где можно посмотреть примеры использования НЕ class-validator, а как раз таки чего-нибудь из yup, zod и т.п. для валидации на бэке? Везде class-validator.
Посмотри trpc
Спасибо, полезная штука
Пожалуйста 👍
Очень интересно. Спасибо. Я когда-то делал таблицу, для записи в базу хостнеймов с параметрами подключения, и там были разные условия, например, в хостнейме нельзя использовтаь символы двоеточния, кавычки разные, и вобще другие спецсимволы. А в пути к ключу ssh тоже чего-то там нельзя использовать, и порт ссш всегда должен быть числом и не больше 65к. Это приблизительно, вот сам функция, причем я по факту только учу эту тему, и писал ровно так, насколько у меня хватало понимания :) то есть скорее всего сделано через пень колоду, но эта функция работала и в целом вроде даже не плохо, возвращала false если там что-то было левое в ячейке:
function isCellValid(cellValue, cellClass) {
// Если ячейка редактируется через модальное окно и значение равно {{uploaded}}, возвращаем true.
// Используется для загрузки ssh-key.
if (isModalEdit && cellValue === '{{uploaded}}') {
return true;
}
switch (cellClass) {
case 'hostname':
return /^[a-z0-9.+/-]+$/i.test(cellValue) && !/[!"'(){}\[\]@#$%^&*;]/.test(cellValue);
case 'alias':
case 'user':
// Запрещены двоеточия, одинарные и двойные кавычки
return !/[:"'"]/.test(cellValue);
case 'ssh_key_path':
return /^[a-z0-9.+/_-]+$/i.test(cellValue) && !/[!"'(){}\[\]@#$%^&*;]/.test(cellValue);
case 'ssh_port':
return Number.isInteger(+cellValue) && +cellValue >= 0 && +cellValue
Конечно, просто пишите свой кастомный валидатор
@@PurpleSchoolда, я ещё поспешил писать коммент не досмотрев видео до финала. Та вы рассказываете про age и диапазон можно описать.
Valibot - прикольная штука, даже апишка похожа на zod. Мне кажется, что похожая история будет с ts-rest и trpc)
Да)
Я как то не понял, это библиотека для валидации на бэке? Или для фронта тоже подходит?
Я пока не очень в силен в JS, но вопрос валидации форм для меня крайне актуален )
Кстати как раз прохожу ваш курс, базовый JS =)
Круто) эта библиотека подходит как для фронта, так и для бека. На фронте она как раз имеет преимущество относительно других библиотек за счёт малого веса.
а откуда такие подсказки крутые в ide?
Это плагин cmp для neovim
Норм штука. Спасибо.
Пожалуйста!
Спасибо!
Пожалуйста!
Интересно почему Joi не прижился в несте или valibot просто другой инструмент того же назначения?
Просто другой инструмент.
Joi тоже юзают, но в основном в несте все юзают стандартные class-validator/transformer.
Joi хорош но уже пора на пенсию
месяц библиотеке и уже туториалы )
Да, слежу за новинками, чтобы вам рассказывать)
@@PurpleSchoolАнтон, а подскажите где вы следите за новинками?)
Рассскажите пожалуйста про то как работают под капотом class-transformer и reflect-metadata а также оверхед которые они добавляют.
З
Один из видео не обойтись, можете посмотреть у меня в курсе но TypeScript целый раздел про это.
Эта библиотека умеет делать схему из типа/интерфейса?
У zod, который громко называет себя typescript-first, такого нет, поэтому в случаях, когда тип уже создан (например, автоматически сгенерирован другим процессом), приходится вручную задавать схему и дублировать (а фактически схема даже больше типа) код.
Схему из типа она не сделает, так как типов нет в runtime, но тип из схемы выведет, как я и показываю.
Аааа, горшочек, не вари! Только вчера про zod узнали, а уже вырос его убийца. Было бы интересно сравнение, в чем таки zod сейчас выигрывает. Кроме как различными интеграциями от коммьюнити, например с тем же nest.
👍
Хм. Когда мы интегрируем фронтенд со сторонней апишкой, которая в любой момент может поменяться - использование понятно. Но стоит ли заниматься подобной валидацией, если мы работаем с нашим бэком, которому мы доверяем?🧐
Для работы со свои беком не думаю. Скорее это валидация запросов на бэк с его стороны, валидация форм и прочее.
Честно не очень понимаю этой погони за килобайтами, при современном интернете 1кб или 100кб - сколько разница будет, тысячная секунды?
Так дело не в размере загружаемого JS, а в размере исполняемого, так как это нагрузка на процессор для слабых устройств.
@@PurpleSchool Еще большая "экономия на спичках", как по мне, это совсем не то, ради чего стоит жертвовать удобством класс-валидатора
@@Ярослав-т2э9б Размер исходного бандла - это сейчас узкое место в разработке. Куча мобильных устройств тормозит из-за неумеренного использования зависимостей, быстро садится батарея и т.п..
@@Ярослав-т2э9б вот из-за таких программистов сейчас ос на холостых жрет по 3гб по сути выполняя функции те же что когда-то хр например в 256 мб ))
@@un_defined А чего не 3.11, функции же совсем не расширяются? )) У меня в моем стареньком телефоне оперативы больше, чем в компе был хард, когда XP вышел, может поэтому? 😁
Когда обзор на nvchad?:)
Пока точных сроков нет)
Полезный материал!
Спасибо!
Почему нельзя посмотреть код библиотеки с комментариями, а не смотреть доку
Можно)
мерси
👍
zod реально слишком жирный для фронтенда, когда надо всего лишь сделать схему и показать ошибки. Зод сейчас тянет кучу всего не нужного и насколько я понимаю веса добавляет возможность чейнинга в схемах
👍
Чем он жирный?
только у меня не работает сайт валибота?
Да. Как видим проект не долго просуществовал
)))
@@PurpleSchool не в курсе что с ним? никогда не видел такую ошибку хрома 404
Нет, может мы положили)