Новый Valibot - альтернатива Zod для валидации

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ม.ค. 2025

ความคิดเห็น • 61

  • @PurpleSchool
    @PurpleSchool  ปีที่แล้ว +1

    🔗 Ссылки:
    Valibot: valibot.dev/
    🎉 Курсы по TypeScript: purpleschool.ru/course/typescript
    🎓 Мои курсы по разработке: purpleschool.ru
    💬 Telegram канал с полезными советами: t.me/purple_code_channel

  • @holingdev1737
    @holingdev1737 ปีที่แล้ว +6

    Спасибо, что делитесь интересными инструментами.

  • @Илья-э7ю9в
    @Илья-э7ю9в ปีที่แล้ว +1

    Классный инструмент. Спасибо что делишься интересными новинками)

  • @needcode86
    @needcode86 ปีที่แล้ว +2

    Привет, а в production в NestJS, что используешь? Class-validator?

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Сейчас да, чаще его

  • @StrikerFeed
    @StrikerFeed ปีที่แล้ว +1

    Где можно посмотреть примеры использования НЕ class-validator, а как раз таки чего-нибудь из yup, zod и т.п. для валидации на бэке? Везде class-validator.

    • @Disorrder
      @Disorrder ปีที่แล้ว

      Посмотри trpc

  • @Velichkina_a
    @Velichkina_a ปีที่แล้ว +1

    Спасибо, полезная штука

  • @maksikgregory4988
    @maksikgregory4988 ปีที่แล้ว +1

    Очень интересно. Спасибо. Я когда-то делал таблицу, для записи в базу хостнеймов с параметрами подключения, и там были разные условия, например, в хостнейме нельзя использовтаь символы двоеточния, кавычки разные, и вобще другие спецсимволы. А в пути к ключу 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
      @PurpleSchool  ปีที่แล้ว

      Конечно, просто пишите свой кастомный валидатор

    • @maksikgregory4988
      @maksikgregory4988 ปีที่แล้ว +1

      ​@@PurpleSchoolда, я ещё поспешил писать коммент не досмотрев видео до финала. Та вы рассказываете про age и диапазон можно описать.

  • @artyomtaranenko2267
    @artyomtaranenko2267 ปีที่แล้ว +3

    Valibot - прикольная штука, даже апишка похожа на zod. Мне кажется, что похожая история будет с ts-rest и trpc)

  • @АнтонСурыгин-ф9ж
    @АнтонСурыгин-ф9ж ปีที่แล้ว +2

    Я как то не понял, это библиотека для валидации на бэке? Или для фронта тоже подходит?
    Я пока не очень в силен в JS, но вопрос валидации форм для меня крайне актуален )
    Кстати как раз прохожу ваш курс, базовый JS =)

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว +1

      Круто) эта библиотека подходит как для фронта, так и для бека. На фронте она как раз имеет преимущество относительно других библиотек за счёт малого веса.

  • @iBird
    @iBird ปีที่แล้ว +2

    а откуда такие подсказки крутые в ide?

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Это плагин cmp для neovim

  • @dmitriy4415
    @dmitriy4415 ปีที่แล้ว +1

    Норм штука. Спасибо.

  • @VB-s4p
    @VB-s4p ปีที่แล้ว +1

    Спасибо!

  • @al77ex1
    @al77ex1 ปีที่แล้ว +2

    Интересно почему Joi не прижился в несте или valibot просто другой инструмент того же назначения?

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Просто другой инструмент.

    • @L0wPressure
      @L0wPressure ปีที่แล้ว

      Joi тоже юзают, но в основном в несте все юзают стандартные class-validator/transformer.

    • @2009Spread
      @2009Spread ปีที่แล้ว

      Joi хорош но уже пора на пенсию

  • @PutlerXLO
    @PutlerXLO ปีที่แล้ว +1

    месяц библиотеке и уже туториалы )

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Да, слежу за новинками, чтобы вам рассказывать)

    • @Cinerable
      @Cinerable ปีที่แล้ว

      @@PurpleSchoolАнтон, а подскажите где вы следите за новинками?)

  • @PeterMorris-nq2ly
    @PeterMorris-nq2ly ปีที่แล้ว

    Рассскажите пожалуйста про то как работают под капотом class-transformer и reflect-metadata а также оверхед которые они добавляют.
    З

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Один из видео не обойтись, можете посмотреть у меня в курсе но TypeScript целый раздел про это.

  • @virtual5754
    @virtual5754 ปีที่แล้ว +1

    Эта библиотека умеет делать схему из типа/интерфейса?
    У zod, который громко называет себя typescript-first, такого нет, поэтому в случаях, когда тип уже создан (например, автоматически сгенерирован другим процессом), приходится вручную задавать схему и дублировать (а фактически схема даже больше типа) код.

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Схему из типа она не сделает, так как типов нет в runtime, но тип из схемы выведет, как я и показываю.

  • @CJIu3eHb
    @CJIu3eHb ปีที่แล้ว +2

    Аааа, горшочек, не вари! Только вчера про zod узнали, а уже вырос его убийца. Было бы интересно сравнение, в чем таки zod сейчас выигрывает. Кроме как различными интеграциями от коммьюнити, например с тем же nest.

  • @sergeimalinin
    @sergeimalinin ปีที่แล้ว

    Хм. Когда мы интегрируем фронтенд со сторонней апишкой, которая в любой момент может поменяться - использование понятно. Но стоит ли заниматься подобной валидацией, если мы работаем с нашим бэком, которому мы доверяем?🧐

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Для работы со свои беком не думаю. Скорее это валидация запросов на бэк с его стороны, валидация форм и прочее.

  • @Ярослав-т2э9б
    @Ярослав-т2э9б ปีที่แล้ว

    Честно не очень понимаю этой погони за килобайтами, при современном интернете 1кб или 100кб - сколько разница будет, тысячная секунды?

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Так дело не в размере загружаемого JS, а в размере исполняемого, так как это нагрузка на процессор для слабых устройств.

    • @Ярослав-т2э9б
      @Ярослав-т2э9б ปีที่แล้ว

      @@PurpleSchool Еще большая "экономия на спичках", как по мне, это совсем не то, ради чего стоит жертвовать удобством класс-валидатора

    • @alexperemey6046
      @alexperemey6046 ปีที่แล้ว

      ​@@Ярослав-т2э9б Размер исходного бандла - это сейчас узкое место в разработке. Куча мобильных устройств тормозит из-за неумеренного использования зависимостей, быстро садится батарея и т.п..

    • @un_defined
      @un_defined ปีที่แล้ว

      @@Ярослав-т2э9б вот из-за таких программистов сейчас ос на холостых жрет по 3гб по сути выполняя функции те же что когда-то хр например в 256 мб ))

    • @Ярослав-т2э9б
      @Ярослав-т2э9б ปีที่แล้ว

      @@un_defined А чего не 3.11, функции же совсем не расширяются? )) У меня в моем стареньком телефоне оперативы больше, чем в компе был хард, когда XP вышел, может поэтому? 😁

  • @BorderInVais
    @BorderInVais ปีที่แล้ว

    Когда обзор на nvchad?:)

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Пока точных сроков нет)

  • @SalexTT
    @SalexTT ปีที่แล้ว +1

    Полезный материал!

  • @dmitripolevoi4473
    @dmitripolevoi4473 ปีที่แล้ว +1

    Почему нельзя посмотреть код библиотеки с комментариями, а не смотреть доку

  • @un_defined
    @un_defined ปีที่แล้ว +1

    мерси

  • @izzy7541
    @izzy7541 ปีที่แล้ว +3

    zod реально слишком жирный для фронтенда, когда надо всего лишь сделать схему и показать ошибки. Зод сейчас тянет кучу всего не нужного и насколько я понимаю веса добавляет возможность чейнинга в схемах

  • @ivanselyt
    @ivanselyt ปีที่แล้ว

    только у меня не работает сайт валибота?

    • @ДенисКуликов-м3о
      @ДенисКуликов-м3о ปีที่แล้ว +1

      Да. Как видим проект не долго просуществовал

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      )))

    • @ivanselyt
      @ivanselyt ปีที่แล้ว

      @@PurpleSchool не в курсе что с ним? никогда не видел такую ошибку хрома 404

    • @PurpleSchool
      @PurpleSchool  ปีที่แล้ว

      Нет, может мы положили)