Невероятный Vite под микроскопом

  Рет қаралды 32,688

АйТи Синяк

АйТи Синяк

Күн бұрын

О Vite не написал статью уже только ленивый. Все рассказывают, что это новая серебряная пуля для запуска приложений. Постоянно мелькают лозунги "create-react-app больше не нужен!". Так ли это на самом деле и действительно ли Vite настолько хорош, как о нем говорят мы и попробуем разобраться в новом видео
ES Modules: developer.mozilla.org/en-US/d...
Поддержать Айти Синяка можно здесь:
KZfaq: / @it-sin9k
boosty: boosty.to/sin9k
Patreon: / itsin9k
00:00 Анонс темы
00:38 Что такое Vite
02:15 Как работает Vite
02:49 Что такое esbuild
03:28 ES Modules
05:19 Нюансы использования Vite
06:20 Промежуточные итоги
06:58 Мигрируем на Vite
11:00 Запускаем проект
13:20 Итоги
14:32 Подписывайтесь!
Подписаться на канал: / @it-sin9k
Twitter: / it_sin9k
-------------------------
Данный канал создан для инициирования бесед на различные темы IT сферы (социальные / технические), а также для тех кому короткая видео выжимка статьи, выступления на конференции или же просто личных мыслей, являются более удобным форматом

Пікірлер: 279
@vovergg
@vovergg Жыл бұрын
В видео в самом начале показан кусок документации, в котором написано, что слово Vite французское и его следует произносить как "вит".))
@ansaganie
@ansaganie Жыл бұрын
@user-ik7rp8qz5g
@user-ik7rp8qz5g Жыл бұрын
Французы свой собственный язык произносят на уровне четырехлетних детей. Так стоит ли уподобляться им?
@tumann
@tumann Жыл бұрын
@@user-ik7rp8qz5g жесть откуда такая ненависть к нации?
@user-ik7rp8qz5g
@user-ik7rp8qz5g Жыл бұрын
@@tumann с нацией все ок, претензии к нормам произношения их языка (и написания тоже, но это другая тема).
@lomeat
@lomeat Жыл бұрын
Это как Vue, который все зовут Вью. Просто не все привыкли еще) А вообще нечего называть свой продукт так, что его сложно произнести
@VirusTr0yan
@VirusTr0yan Жыл бұрын
На первой же минуте указано в доке, что произносить надо "вит" ))))
@paemox
@paemox Жыл бұрын
Не хватало еще и учить французкий, так что будет Вайт!
@it-sin9k
@it-sin9k Жыл бұрын
Вот блин опростоволосился)
@mvttofficial
@mvttofficial Жыл бұрын
Вайт, типо белый?
@AbraKadabra000
@AbraKadabra000 Жыл бұрын
@@mvttofficial Белый на французском blanc
@advhunter2
@advhunter2 Жыл бұрын
Да, очень по ушам резало
@h3lpkey
@h3lpkey Жыл бұрын
В январе переводил свой проект на vite, 1в1 все этапы и баги словил. Я получил сплошной кайф от перехода и решения этих трудностей, но мне и отчитываться только перед самим собой. В целом потратил сутки на решение, от идеи до финального коммита. Спасибо за видео и труд!
@user-bk9cc1lv2w
@user-bk9cc1lv2w 3 ай бұрын
А алиасы работают? У меня почему-то пошет ошибу, но все рав в инструкции
@olegsbk3562
@olegsbk3562 Жыл бұрын
Было бы интересно еще видео про SWC посмотреть от тебя. Спасибо за видео!
@fallout407
@fallout407 Жыл бұрын
У меня сейчас во вкладках открыто 10+ видосов от синяка, пересматриваю по 2 и 3 кругу) Готовлюсь к собесам) Спасибо тебе огромное, за невероятно полезный контент!
@it-sin9k
@it-sin9k Жыл бұрын
Удачи на собеседованиии!
@mrunderson983
@mrunderson983 Жыл бұрын
желаем успехов)
@fallout407
@fallout407 Жыл бұрын
@@it-sin9k 🙏
@user-hp2cg6px8c
@user-hp2cg6px8c Жыл бұрын
Соболезную За три месяца меньше дюжины собесов на сеньор-фронта На последнем спросили "зачем придумали БЭМ", "что такое box-model" и еще полчаса вопросов по CSS, два вопроса по JS (ну с ними-то я справился), ноль вопросов по библиотекам - сказали, что я плаваю в вопросах. Вакансия была, если что, не на джуна и не на верстальщика, а именно на сеньор-инженера. На другом собесе дали задание: есть функция конструктор и класс, от них два экземпляра и 20 строк кода, в каждой из которых меняются, добавляются, перекрещиваются, удаляются свойства экземпляров, прототипов и т.д. и на каждой надо сказать устно результат - поплыл уже на 10 строке, запутавшись какие там были до этого операции. Сказали, что я не знаю прототипов и до следующего собеса не допустили (хотя по предыдущим вопросам удивлялись глубоким знаниям). Из всех собесов был только один нормальный, но там я выше головы прыгнул и ясен пень завалился, но было интересно у Evil Martians пособеседоваться. Это пздц, товарищи.
@fallout407
@fallout407 Жыл бұрын
@@user-hp2cg6px8c оу, это дичь. Имхо, прототипы на клиенте не нужны, меня ни разу классами не грузили. Даже про this все один раз спросили за 10+ собесов. Вам просто везет на персонажей, которые самоутвердиться хотят за ваш счет. Лучше бы про производительность приложений спрашивали. Я в такие компании даже если позовут не пойду, в тот же Яндекс принципиально не собеседуюсь, тк они не понимают кого ищут, сначала за алгоритмы, простите - е*ут и в хвост и в гриву, а на работе в итоге: display: flex; и padding: 10px; Удачи вам в поисках!
@eugeniyvinnikov5480
@eugeniyvinnikov5480 Жыл бұрын
Видео супер, давно хотел попробовать Vite и посмотреть что это такое. Спасибо большое за контент !
@TheTexPro
@TheTexPro Жыл бұрын
Огромное спасибо за видео!
@YuriyParaska
@YuriyParaska Жыл бұрын
Очень крутое и доступное объяснение, спасибо большое!)
@it-sin9k
@it-sin9k Жыл бұрын
мы очень старались)
@vovergg
@vovergg Жыл бұрын
Видео класс!) Судя по увиденному, я для себя понял, что старые громоздкие проекты на Vite переводить будет проблематично и не стоит, а начинать новые как раз нужно. Судя по видео у Vite преимуществ на порядок больше, чем недостатков.
@fallout407
@fallout407 Жыл бұрын
Да, новый проект завелся на реакте без сучка и задоринки)
@profesor08
@profesor08 Жыл бұрын
Стоит, даже если наговнякано конкретно, то будет повод прибраться.
@boldureans
@boldureans Жыл бұрын
Спасибо за видео!
@user-sr5ts2jz7e
@user-sr5ts2jz7e Жыл бұрын
Спасибо большое за этот разбор
@alexanderkomanov4151
@alexanderkomanov4151 Жыл бұрын
Thanks, IT-Sinyak!
@pashadotcenko7391
@pashadotcenko7391 9 ай бұрын
спасибо. очень информативно.
@TheLevius
@TheLevius Жыл бұрын
Vite - современный инструмент. И тот факт, что он не использует nodejs костыли (commonJS модули), а завязывается на инструменты языка (ESM) говорит о том, что он все правильно делает. 11:40 - "import.meta.env" - удивлен, что у человека с такой глубокой экспертизой в React, этот момент вызвал удивление )))
@evisotskiydev
@evisotskiydev Жыл бұрын
круто что можно посмотреть как кто-то другой набивает себе шишки, и не делать этого самому ) Спасибо за работу!
@it-sin9k
@it-sin9k Жыл бұрын
Такая идея и была у данного видео, сэкономить время для нескольких тысяч людей)
@rubgud9903
@rubgud9903 Жыл бұрын
Спасибо Синяк! Знаю тебя со времен Itechart. Супер толковый мужик!
@it-sin9k
@it-sin9k Жыл бұрын
Спасибо!) Были времена хорошие)
@farkhad-rh
@farkhad-rh Жыл бұрын
Отличное видео, спасибо! Конечно, я не имел опыта проведения миграций, но я впервые использовал Vite на новом проекте год назад и до сих пор все работает отлично. Недавно я использовал его на еще одном новом проекте и заметил значительные изменения, которые свидетельствуют о его продвижении и развитии. Я уверен, что в будущем Vite станет еще лучше и удобнее в использовании)
@it-sin9k
@it-sin9k Жыл бұрын
Круто! Спасибо за комментарий!
@kotifnat
@kotifnat Жыл бұрын
Настраивал ли прокси сервер? Если да то, подскажи пожалуйста, есть ли возможность проксировать все пути на бэк без префиксов типо /api, то есть если я хочу сделать запрос на /test/1 чтоб он на бэк проксировал?
@profesor08
@profesor08 Жыл бұрын
В целом, js код не должен зависеть от бандлера, тогда и проблем с его переносом между проектами не будет. Если ts, то все для его работы и сборки описано в tsconfig, и бандлер должен его понимать. В vite и webpack (cra) за это отвечает специальный плагин. Переменной `process` нечего делать в браузере. Но если вдруг понатыкали везде где надо и не надо, то решается это примитивно, либо через плагин (аналогично в webpack, cra), либо вручную ее объявить в `window.process = import.meta`. Лично я такой фигней не страдаю, потому что в браузере есть только одно окружение, это сам браузер. А обработка окружения, это задача всего того кода, который крутится на сервере.
@it-sin9k
@it-sin9k Жыл бұрын
npm пакеты не требуют у вас такие переменные?
@profesor08
@profesor08 Жыл бұрын
@@it-sin9k нет, эти переменные нужны пакетам, и это пакеты должны заботиться о том, чтоб все, что им надо, у них было. Ведь у них свой проект, свой бандлер, который все собирает и делает релиз. Некоторые делают билды под разные типы модулей, и возможно, если пакету что-то надо, то это намек на то, что пакет неправильно используется. Обычно это все автоматически разруливается, но может какой-то исключительный случай.
@virtuoz-ru
@virtuoz-ru Жыл бұрын
Во первых не вайт, а вит. Vite это классная вещь. Как и всё, что делает Эван Ю. Пользуюсь им уже больше года.
@__kawaii
@__kawaii 4 ай бұрын
Во-первых: не "во первых", а "во-первых". Во-вторых: если закидываешь людям понт, будь готов соответствовать.
@user-hn5ie9hx6q
@user-hn5ie9hx6q Жыл бұрын
Спасибо за видео. Удивило что вы используете react-scripts, а не кастомный webpack config для своего проекта. На сколько я слышал и в какой-то момент это было в документации к CRA, что он не рекомендуется для продакшн сборки.
@it-sin9k
@it-sin9k Жыл бұрын
Как то так исторически сложилось и всех вроде по сей день это устраивает)
@user-nj9yu4dd8p
@user-nj9yu4dd8p Жыл бұрын
Спасибо!
@allusio
@allusio Жыл бұрын
Было бы интересно про module-federation и об MFE в целом
@dididie158
@dididie158 Жыл бұрын
согласен
@ansaganie
@ansaganie Жыл бұрын
СОГЛАСЕН 100х
@bebeto123g
@bebeto123g Жыл бұрын
На проекте пришлось разобраться с MF. "Просто добавляешь по сути плагин, читаешь документацию, настраиваешь свое приложение, имимтируешь хост приложение, и вуаля - ты красавчик" - сделал я на домашнем компе под линуксом и последними версиями node и webpack. А вот на рабочем проекте под виндой пришлось обновлять ноду с 14 до 16 (и то пришлось сопроводительное письмо в СБ с пояснением ЗАЧЕМ, и это в 2022г)), webpoack с 4 на 5 версию обновлять, сами понимаете какие проблемы вызывает, в общем всего неделька страданий и поиска новой работы грузчиком в пятерочке...Как hot-reload сделать внутри родительского приложения при изменении в дочернем - так и не разобрался, потому разрабатываю без режима MF, я слишком для этого дерьма.
@allusio
@allusio Жыл бұрын
@@bebeto123g это путь воина
@manushov_rodion973
@manushov_rodion973 11 ай бұрын
Не надо лезть в этот ад - там куча ньансов, которые усложняют разработку, поддержку и тестирование многократно!) Установкой ModuleFederation, не ограничитесь)
@baileysli6235
@baileysli6235 Жыл бұрын
Переводил небольшой проект с Вебпака на Вит. Тоже были проблемы с process и SVGR, но результатом остался доволен. + легаси бандл одним плагином, удобно + из коробки сразу CSS модули настроены. Для старых больших и громоздких проектов переходить не советовал. Но для небольших или новых на чистом Реакте это отличный вариант. А про CRA много критики в open source сообществе
@VladVeninTV
@VladVeninTV Жыл бұрын
Лайк👍
@JackPts
@JackPts 10 ай бұрын
У меня был проект на вите+реакт, всё работало как пушка. Но потом надо было сделать из него микросервис, и вот тут пришлось от него отказаться. Делал всё по нагугленным статьям и избавлялся от ошибок, но по итогу вит так и не возвращал файлы на expose. Пришлось переделывать всё на тормознутый webpack federation module. Только так всё завелось без проблем.
@it-sin9k
@it-sin9k 10 ай бұрын
Спасибо, что поделились горьким опытом)
@sierafa1nt
@sierafa1nt Жыл бұрын
Лично у меня абсолютные пути отлично завелись и ничего не пришлось менять.
@Moltenship
@Moltenship Жыл бұрын
У вас весьма специфичный кейс, для ~80% проектов vite является лучшей альтернативой. Dan Abramov в обсуждении CRA сказал, что Vite сейчас является лучшим вариантом чем CRA.
@it-sin9k
@it-sin9k Жыл бұрын
Так и никто не оспаривает, что в данный момент, он выглядит привлекательнее :) Меня смущают 2 момента: увеличенное количество npm зависимостей, так как любой важный проект с важными клиентами хочет иметь лишь безопасные пакеты и насколько он будет развиваться в экосистеме реакта дальше, не очень понятно. И что самое интересное, хотелось бы посмотреть как CRA будет дальше развиваться имея такого конкурента
@nikolaysmolov8031
@nikolaysmolov8031 Жыл бұрын
Привет! Спасибо за ролик! Я не сильно опытный разработчик и может быть поэтому столкнулся с такими проблемами, которых в cra просто нет) а именно, если проект маленький и нет необходимости как-то хитро настраивать линтер и окружение для тестирования то cra это ваш выбор. Лично я столкнулся с проблемами с jest, он не поддерживает es module и пришлось потанцевать с бубном , чтобы настроить его запуск и ставить отдельно babel. С baseurl проблема решается плагином без всяких алиасов.
@it-sin9k
@it-sin9k Жыл бұрын
Спасибо за полезный комментарий! Думаю другим зрителям будет полезно почитать)
@nazarshvets7501
@nazarshvets7501 Жыл бұрын
jest на vitest можно было сразу мигрировать. Там один конфиг для vite и vitest шарится. Надо только пару опций добавить, и drop-in replacement готов
@alexandrkositsky7698
@alexandrkositsky7698 Жыл бұрын
для jest есть ts-jest, который работает с ES modules и бабель не надо ставить. Там правда надо в доке найти нужный конфиг. А линтер настроить - это 5 секунд.
@anatolysokolov
@anatolysokolov Жыл бұрын
не вайт, а вит :) там еще забавная плюшка есть - каждый текст в jsx должен быть в своем тэге. Типа sometext нельзя
@user-pt5yi8lx4q
@user-pt5yi8lx4q Жыл бұрын
+ даже в видосе показан скрин доки, в которой написано как правильно читается, мб я душнила, но бесит жоска
@anatolysokolov
@anatolysokolov Жыл бұрын
@@user-pt5yi8lx4q ну значит я тоже душнила, все норм ;)
@lionstar3189
@lionstar3189 Жыл бұрын
На анг.яз будет вайт, а вит это с франсуа. Душнилы вы капец
@anatolysokolov
@anatolysokolov Жыл бұрын
@@lionstar3189 надо уважать разработчика, раз уж он явно написал как надо читать наименование
@anatolysokolov
@anatolysokolov Жыл бұрын
@@lionstar3189 ща пробежался по нескольким видосам от англоязычных ютуберов - у всех вит
@AibekSadraliev
@AibekSadraliev Жыл бұрын
привет! Долгожданное видео, спасибо за проделанную работу. Есть ремарка. CRA не поддерживает поддержку absolute paths из под коробки, требуется установить дополнительно CRACO + react-app-alias. Если есть другой, поделитесь пожалуйста. :)
@it-sin9k
@it-sin9k Жыл бұрын
Прям из коробки нет, нужно jsconfig еще допилить, вот как тут и не нужно будет react-app-alias create-react-app.dev/docs/importing-a-component/
@user-ex9ju3sz2x
@user-ex9ju3sz2x Жыл бұрын
Недавно начал новый проект на Vite. Потратил пару дней на то, чтобы разобраться, как что работает и настройку всех вспомогательных инструментов, оптимизаторов картинок, проброс переменных окружения и тд. По итогу очень доволен, не решённых проблем не осталось, а скорость и правда молниеносная.
@alexlmaxl4966
@alexlmaxl4966 Жыл бұрын
Спасибо за видео! Вопрос, может немного не по теме: Hot reload - на CRA толком не работает, если есть в проекте redux или подобный либы. Это у меня какая-то локальная проблема с Hot reload или его как-то по хитрому настроить нужно? И как с Hot reload на vite(то же летает)?
@alexandrkositsky7698
@alexandrkositsky7698 Жыл бұрын
Хот релоад на вит реально летает, это типа его самая сильная сторона. Хотя честно меня даже обычный лайврелоад устраивал, подождать 1с не проблема.
@user-yw9wx4lv2w
@user-yw9wx4lv2w Жыл бұрын
думаю что сам редаск не поддерживает хот релоад из коробки. Подозреваю что ему надо объяснить как подменить старые редьюсеры новыми
@typingaway
@typingaway Жыл бұрын
Проект не мигрировали, используем вит для uikit на реакте со старта, проблем с безопасностью зависимостей нет. Скорость дев сборки и правда впечатляет
@DenisK0s
@DenisK0s Жыл бұрын
Можешь пожалуйста в каком-то из будующих видео раскрыть тему минусов useSelect (а именно stale props and "zombie children") по сравнению с mapStateToProps потому что у нас на работе холивар по поводу того чтобы избавиться от mapStateToProps но никто не может адекватно обьяснить какие проблемы мы решим перейдя на useSelect учитывая упомянутые выше скрытые баги. Заранее спасибо!
@it-sin9k
@it-sin9k Жыл бұрын
хмм, да на самом деле никакие серьезные проблемы вы не решите переходя с mapStateToProps на useSelect. У useSelect есть всего 2 преимущества на мой взгляд: - useSelect - это hook, а mapStateToProps подключается через HOK. Соответственно если используешь hook, то у тебя виртуальное дерево меньше, что потенциально должно, уменьшить количество работы. Но не думаю, что вы это почувствуете - без useSelect тяжело делать самостоятельные пере используемые хуки. Например у вас может быть хук useTotalPrice. Он будет использоваться в 5 местах. Внутри него можно достать и redux значение с помощью useSelect. В итоге хук будет полностью самостоятельным. С другой стороны с mapStateToProps придется вам во всех 5 местах доставать это значение и пробрасывать его в хук useTotalPrice. Хорошо, если значение одно, а если их много (amount, currency, discuount and e.c.). Тогда пробрасывать во всех 5 местах неудобно. А через пол года, вам понадобится еще 1 свойство и вы опыть будете пробрасывать во всех 5 местах его и надеяться, что нигде не забыли Как то так
@kch9241
@kch9241 9 ай бұрын
Перешли недавно на Vite, но проект свежий и проблем почти не возникло. Скорость запуска мое почтение) Нужна была еще возможность запуска на моковых данных на non prod окружении (получается возможность запуска в development локально в двух режимах: моковый либо с проксей на реальное окружение, и запуск как production также в двух режимах: на моках либо на env) , и с помощью Vite mode решилось всё просто + Miragejs.
@KirillSmetanin
@KirillSmetanin Жыл бұрын
В январе перевел основной проект компании на vite, проблема с абсолютными путями решается плагином, удобный конфиг с настройкой прокси, сейчас еще плагин module federation допилят до ума (на последней версии проблемы, если либа одновременно использует именованные и дефолтный импорты) и будет сказка.
@XCanG
@XCanG Жыл бұрын
У нас таких проблем с миграцией не было, а начать новый проект сразу на Vite довольно не сложно. Думаю как минимум старые проекты можно не трогать, а вот в новых сразу начать работу с ним. Странно что на твоём проекте с кучей файлов (точное количество я так и не понял) там всего 9 секунд. У нас на крупном проекте 65 секунд шла дев сборка и hot reload был не менее 5 секунд, с Vite первичная сборка уменьшилась до 3 секунд, последовательные 0.5-1.5 секунды, а hot reload настолько быстрый что трудно сказать сколько там занимает времени.
@it-sin9k
@it-sin9k Жыл бұрын
Ого крутые показатели) не слышал чтобы проект запускался 65 секунд никогда) огромный же у вас проект)
@lLoseControll
@lLoseControll Жыл бұрын
У меня тоже около минуты запускается, хотя у меня бандл на 600кб,учкбныц проект, правда и проц i7 2 поколения) на ryzen 5 3600 секунд 30, если бы запускался 9 сек, я бы был бы доволен)))
@it-sin9k
@it-sin9k Жыл бұрын
@@lLoseControll Ребята у меня мак бук последний) сорян)
@XCanG
@XCanG Жыл бұрын
@@it-sin9k да кстати, отчасти влияет то, что это на типичном офисном ПК. В домашнем условии на мощном ПК оно конечно было бы побыстрее. Тем не менее именно на рабочей машине и нужно эти оптимизации.
@kotifnat
@kotifnat Жыл бұрын
Хорошее видео, спасибо большое. У меня еще во время настройки Vite возникли проблемы с настройкой proxy сервера (не додумался как настроить так чтоб сервер проксировал все запросы на бэкенд без префиксов типо /api и т.д.). Если кто знает как сделать, подскажите, пожалуйста
@fallout407
@fallout407 Жыл бұрын
два дня назад, проходил подобный путь)) В итоге понял, что переводить на vite react проект - не вариант, а вот новый стартанул отлично)
@user-vm2db5cq1g
@user-vm2db5cq1g Жыл бұрын
Тоже хотел сделать проект на Vite + React, но засомневался стоит ли оно того, спасибо за видео, думаю что все же разработчики CRA просто тоже обновят используя лучшие практики из Vite, тк поддержка у реакта мощная, врятли они это так оставят))
@it-sin9k
@it-sin9k Жыл бұрын
Про это запланировал отдельное видео)
@stivandsoft
@stivandsoft 10 ай бұрын
У меня на проекте где 20 метров исходников, они их все разом грузит и при первой загрузке это очень долго. Ещё бывают случае, при hot reload дом дерево ломается
@greydragon888
@greydragon888 Жыл бұрын
Кстати, я не знаю, почему, но у меня нет проблемы с process.env.NODE_ENV. Он отлично выводит (по крайней мере "development") его значение в рантайме
@ZHLbrite
@ZHLbrite 7 ай бұрын
Спасибо! Вроде правильно произносить ВИТ, если верить документации)
@kotov9281
@kotov9281 Жыл бұрын
Вит для прода использую уже год, миграция с CRA действительно больная если проект большой с очень дорогим рефакторингом. Но хоронить технологию которую используют в проде уже (по меркам развития веба) давно, чисто из-за того что у тебя не вышло мигрировать один проект - легкомысленное решение
@it-sin9k
@it-sin9k Жыл бұрын
Чего сразу хоронить) просто не рекомендую по первым ощущениям) Буду и дальше наблюдать как развивается экосистема)
@profesor08
@profesor08 Жыл бұрын
Если cra используется с конфигом из коробки, то миграция это вопрос пары часов. А если есть дополнительный кастомный конфиг вебпака, то может понадобится накидывать кучу плагинов или самому их писать.
@MegaBeshka
@MegaBeshka Жыл бұрын
дев сборка использует esbuild написанный на golang, а продакшн через rollup. не может ли из-за этого измениться поведение кода при определенных условиях? по сути 2 разных компилятора, и 2 разные сборки
@profesor08
@profesor08 Жыл бұрын
@@MegaBeshka это так и происходит
@MegaBeshka
@MegaBeshka Жыл бұрын
@@profesor08 под поведением кода я имел ввиду ошибки
@user-hp2cg6px8c
@user-hp2cg6px8c Жыл бұрын
0:40 - "документация нам говорит говорит следующее ..." полностью пропускает 5 слов о том, как произносить слово "... вайт - это инструмент ... "
@SanoTheLitch
@SanoTheLitch Жыл бұрын
Тоже встрял с миграцией микрофронта и интеграцией в родительское на Webpack'e, в итоге забил...но 3 следующих реакт-проектов, разрабатывавшихся с нуля сразу начинал с Вити - просто чистейший кайф. Из замеченных проблем: - Модули только на CommonJS могут (и скорее всего будут) не работать - Фанатский плагин ModuleFederation крайне сырой с кучей issues на гитхабе - Могут быть проблемы с UI-китами (но скорее всего с вебпаком будут те же самые) - Конкретно у меня не завелось использование именованных экспортов при использовании подхода PublicAPI. Где то читал, что у Вити с этим проблемы, но возможно я сам дурак т где-то не разобрался
@it-sin9k
@it-sin9k Жыл бұрын
Ого, спасибо за фидбек :) Очень полезно)
@alexandrkositsky7698
@alexandrkositsky7698 Жыл бұрын
Он же автоматом конвертирует модули на CommonJS в ESM формат, как и rollup, поверх которого он работает. С чего бы вдруг они не будут работать?
@it-sin9k
@it-sin9k Жыл бұрын
@@alexandrkositsky7698 ничего автоматом не происходит, Это делает создатель пакета с помощью каких то инструментов по идее. И насколько эти инструменты оттестированы, если толком никто не пользуется ES модулями неизвестно. И добавили ли ES модули для пакета вообще это вопрос на усмотрение создателя пакета насколько я понимаю. Так что все может быть :)
@cyber-doge
@cyber-doge Жыл бұрын
Я проблему с process решил таким кодом: export default defineConfig({ define: { "process.env": {}, })) ты такой пробовал и почему не помогло?
@it-sin9k
@it-sin9k Жыл бұрын
да, это первое что я попробовал. У меня просто ничего не изменилось. Мб какой то пакет более специфичный в под зависимостях используется.
@devmoek
@devmoek Жыл бұрын
Видео полезное, спасибо большое. Но почему Вайт? Когда Вит..
@ogvaz
@ogvaz Жыл бұрын
Шикарная рубрика 🤘
@jamjam3337
@jamjam3337 Жыл бұрын
👏👍
@dididie158
@dididie158 Жыл бұрын
Я пробовал перевести рабочий проект втихую, столкнулся с очень многими ошибками. В итоге мне удалось это сделать, но я не знаю как теперь организовать динамический роутинг, ибо у меня все файлы грузятся теперь и страница при каждой перезагрузке тормозит(
@ArtikMan1994
@ArtikMan1994 Жыл бұрын
Синяк, сделай пожалуйста видео при желании на тему: "React reducer + context на хуках vs Redux. Что лучше". Потому что мне кажется, с этими хуками можно обойтись без редакса?
@it-sin9k
@it-sin9k Жыл бұрын
Мне кажется подобную тему я уже раскрыл в нескольких видео, но вот доклад мой, который хорошо это все подытожит: kzfaq.info/get/bejne/nL2dYNBiksXIhnU.html
@ArtikMan1994
@ArtikMan1994 Жыл бұрын
@@it-sin9k посмотрю. Спасибо!
@pvpshoot
@pvpshoot Жыл бұрын
Я для алиасов использовал все директории внутри папки src которые вычислялись прям в конфиге, не пришлось пути переписывать
@it-sin9k
@it-sin9k Жыл бұрын
Умно)
@RamaRama-qv3jo
@RamaRama-qv3jo 10 ай бұрын
В итоге на чем, на текущий момент лучше делать сборку для проекта на React Redux?
@it-sin9k
@it-sin9k 10 ай бұрын
А вот как раз записал про это следующее видео))) буквально на днях выйдет))
@RamaRama-qv3jo
@RamaRama-qv3jo 10 ай бұрын
@@it-sin9k С нетерпением жду!
@Shad0w5m00h
@Shad0w5m00h Жыл бұрын
Перешёл на vite и даже мигрировал на него средних размеров проект на cra) проект мигрировал вынужденно, так как он несуразно долго стартовал и собирался. С vite время старта очень сильно выросло, время Билда не так сильно, но раза в полтора наверное. Что не очень здорово: 1) нужно дописывать конфиг для более короткого разрешения путей, тут пришлось поискать 2) по умолчанию вит собирает все файлы просто в одну папку кашей из файлов, нужно дописать в конфиг, чтобы по папкам раскладывалось 3) нужно доставлять плагинов для каких-то вещей спецвещей. Пришлось поэкспериментировать с допфичами. Но, к счастью, на это было определенное время
@serhioramires3166
@serhioramires3166 6 ай бұрын
Возможно у Вас некорректный кофиги поэтому долгий старт.
@Shad0w5m00h
@Shad0w5m00h 6 ай бұрын
@@serhioramires3166 некорректный конфиг cra? Долгий старт был у cra
@JenechekDv
@JenechekDv Жыл бұрын
Спасибо, всё по полочкам разложил. Vue на vite тоже быстрее работает)
@anzay911
@anzay911 Жыл бұрын
Так в тестовую ветку затянуть и там проверить federation, env и ESM.
@2009Spread
@2009Spread Жыл бұрын
тоже пробовал проект перенести на вайт... пару дней фиксил ошибки уже все работало но в консоли еще много красноты оставалось, но пришлось вернуться к вебпаку
@it-sin9k
@it-sin9k Жыл бұрын
Знакомая ситуация :)
@mzn6689
@mzn6689 Жыл бұрын
Согласен, не имеет большого смысла переводить проект ради пары секунд старта дев сервера. Особенно не рекомендую использовать Vite под электрон, там отдельная пачка багов и часы поисков решений.
@amelianceskymusic
@amelianceskymusic Жыл бұрын
1. CRA не позиционируется как что-то для прода, иам Абрамов что-то недавно писал по этому поводу 2. На слабом ноуте запуск КРА пару минут а хот релоад пару секунд, это мегадолго, когда вит/вайт запускается 10 секунд, а хотрелоад "моментальный"
@avatar4eg
@avatar4eg 5 ай бұрын
Вит, но не Вайт На первой минуте скрин документации Overview инструмента, где написано, что Vite - это французское слово "быстро" и произносится оно "veet" (т.е. вит)
@triumphant5912
@triumphant5912 Жыл бұрын
Мне доверили развернуть проект, я сделал на vite хотя друг не советовал, мол может быть не надежно, по функционалу вроде расширять его не придется, хочу совет, если первый лучше уж на CRA?
@it-sin9k
@it-sin9k Жыл бұрын
Я думаю это нужно согласовать с командой. CRA будет более стабильным, а Vite более новым модным и дерзки, но менее стабильным. Как я вижу комментарии делятся на две группы. Я живу уже год и все ок, проблем не было. И год живу, но прошел некоторые трудности неприятные. Почитайте комментарии и примите решение :)
@triumphant5912
@triumphant5912 Жыл бұрын
@@it-sin9k Спасибо за ответ, я принял решение, что модность и дерзость для меня не позволительная роскошь, на данном этапе)) и поэтому перенесу на CRA
@arslan5919
@arslan5919 Жыл бұрын
Почему ещё до получения багов не подумал о том что микрофронт нужно будет переносить, и это нельзя будет. Сэкономили бы много времени.)
@aleksprimetv
@aleksprimetv Ай бұрын
У нас на работе есть 2 проекта 1 на вебпаке, дрогой на vite, как то раз коллега из проекта с vite говорит, а почему у вас не работает хотрелоад, только потом он понял что она занимает секунд 5 и больше))) так что сразу 1 плюс очевиден в сторону vite!
@nikitazharinov2329
@nikitazharinov2329 Жыл бұрын
Да, vite хорош 👍🏻
@user-tp6mn4kl6s
@user-tp6mn4kl6s 11 ай бұрын
От себя добавлю, что для юнит тестов также рекомендуют переходить на vitest. Обратная совместимость есть. В целом, vitest мне понравился больше. Мы сейчас среднего размера приложение кардинально мигрирует с cra + react 16 + redux saga на vite + reac 18 + react context. При этом у нас часть логики в самописных переиспользуемвх модулях (авторизация, биллинг), плюс хитрые скрипты для интернационализации. Мигрирует === пишем с нуля с хитрым nginx, который мигрированные страницы отдает от react 18 а легаси от react 16. Пока очень довольны. Дев сервер не такой быстрый, как его рекламируют, но существенно быстрее старого. Без redux saga код стал изолированным и более понятным, фичи пишутся намного быстрее
@it-sin9k
@it-sin9k 11 ай бұрын
Круто! Спасибо что поделились своей историей)
@chaberch
@chaberch Жыл бұрын
На 0:41 можно посмотреть как произносится название Vite
@greydragon888
@greydragon888 Жыл бұрын
Так и оставался бы на CRA, если бы он не умер (413 pr и отсутствие обновлений больше года - явный признак смерти проекта) Новый проект начал на vite + vitest. Полет пока нормальный
@it-sin9k
@it-sin9k Жыл бұрын
Ого, не знал. Только глянул и действительно год тишины у них О_о
@greydragon888
@greydragon888 Жыл бұрын
@@it-sin9k Больше. Пятую версию зарелизили 14 декабря 2021. В апреле 22 добавили мелкие баг-фиксы.
@PavelLitkinBorisovich
@PavelLitkinBorisovich Жыл бұрын
в вебпаке 5 тоже process нету и buffer и еще штук 10 всяких таких вещей было дропнуто
@it-sin9k
@it-sin9k Жыл бұрын
Хмм, тогда интересно как работает у нас на проекте с вебпаком 5 о_О
@user-hg8bo3em5y
@user-hg8bo3em5y Жыл бұрын
Таки в чем проблема использовать вебпак с esbuild в dev моде?)
@user-yw9wx4lv2w
@user-yw9wx4lv2w Жыл бұрын
можно, но это не даст такого прироста. Скорость vite в деве идет за счет того что он не собирает бандл. Он просто отдает все файлы в браузер как esm модули. Ну и конечно транспилит тот же jsx только по мере того как файл понадобиться.
@fuad2069
@fuad2069 8 ай бұрын
ВИТ ВИТ ВИТ, не вайт!
@eduard-rom
@eduard-rom Жыл бұрын
"На сколько можно доверять этим метрикам вообще непонятно. Это лишь какой-то скриншот" Там снизу есть "More info here", где можно узнать о том, как проводился данный бенчмарк...
@Dima_1411
@Dima_1411 Жыл бұрын
Есть на логрокет статья: "webpack or esbuild: Why not both?" (легко гуглится, не могу оставить ссылку).Там предлагают для вебпака использовать не babel-loader a esbuild-loader, тот самый esbuild что обеспечивает быструю сборку в vite. Кто нибудь пробовал? пока руки не доходили на рабочем проекте конфиг под него переписать
@it-sin9k
@it-sin9k Жыл бұрын
Прикольно :) Звучит как исследование интересное) надо попробовать)
@user-yw9wx4lv2w
@user-yw9wx4lv2w Жыл бұрын
vite работает быстро в dev режиме за счет того что не собирает бандл как это делает вебпак. Дело не только в esbuild
@it-sin9k
@it-sin9k Жыл бұрын
@@user-yw9wx4lv2w да, в видео есть целый блок про ES Modules. Где даже блок схемы разбираются, как это работает :)
@kimanowka
@kimanowka Жыл бұрын
С rrd 6.4 закончил?)
@it-sin9k
@it-sin9k Жыл бұрын
в планах есть еще видео, но хочется разбавлять темы. Судя по статистике тема не настолько востребована
@messenja2547
@messenja2547 Жыл бұрын
Только не ВАЙТ, а ВИТ, ну е мае. Ведь даже в овервью написано (pronounced /vit/, like "veet")
@_boolive_
@_boolive_ 9 ай бұрын
Без проблем перешел с webpack на vite и реализация SSR стала попроще
@HandsomeRoman
@HandsomeRoman Жыл бұрын
Расскажи про микрофронтенд часть на своем проекте
@it-sin9k
@it-sin9k Жыл бұрын
Тема микрофронтенда еще не до конца избита на всех конференциях?)
@DreamingDolphing
@DreamingDolphing Жыл бұрын
Нового react create app больше не будет, его убрали даже из официальной документации. Webpack развиваться тоже не будет, потому что происходит переход на Turbopack, активно развиваются другие не js средства для сборки (например rspack).
@it-sin9k
@it-sin9k Жыл бұрын
Любопытная информация. Ну ждем официального заявления куда переходить по рекомендации в React документации. Пока не очень понятно. В Webpack пока комиты на ежедневной основе есть, но кто знает, что они там подпиливают. Значит нас ждут большие перемены, очень интригующе)
@vpetevotov
@vpetevotov Жыл бұрын
А для чего public URL нужно было прокидывать в HTML файлы? HtmlWebpackPlugin же делал все, что нужно
@YuryGoltsman
@YuryGoltsman Жыл бұрын
Я прошёл чуть дальше и решил все проблемы с project.env и другие проблемы vite. Но это было только начало. Он генерирует es-module для каждого пакета зависимостей и эти модули кишат проблемами. На часть из них жалуется сам Вит (сам придумал, сам обиделся :), а остальные валятся в браузере. С новой аппликацией проще, но многие проблемы зависимостей все еще остаются. Мне не понравилось, не смотря на все плюсы. Слишком сыро и нет авто миграции с одного из самых распространенных билдеров - CRA
@it-sin9k
@it-sin9k Жыл бұрын
Очень похожие ощущения словил)
@script1851
@script1851 Жыл бұрын
3:45 забыл добавить ссылку
@it-sin9k
@it-sin9k Жыл бұрын
Исправился! Спасибо developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules
@deadem_
@deadem_ 10 ай бұрын
Вит
@mulfyx
@mulfyx Жыл бұрын
а теперь вспомни сколько модулей ты раньше накатывал для того же вебпака или посмотри зависимости у реакт скриптс и подумай насчёт этого "минуса"
@nefertisu6818
@nefertisu6818 Жыл бұрын
Когда уже будут видео про тришейкинги и что их ломает((
@it-sin9k
@it-sin9k Жыл бұрын
прикольная тема) не думал о ней даже) надо будет поковырять)
@ArtikMan1994
@ArtikMan1994 Жыл бұрын
У нас огромному SPA проекту подключили esbuild-loader к вебпаку и сборка стала быстрее где-то в 7 раз
@it-sin9k
@it-sin9k Жыл бұрын
о круто) а у вас TS на проекте? вы отдельно loader для него подключали?
@ArtikMan1994
@ArtikMan1994 Жыл бұрын
@@it-sin9k Ку) Нет, у нас на проекте TS нету. В ближайшее время планируем переходить. До этого был старый добрый babel-loader
@it-sin9k
@it-sin9k Жыл бұрын
@@ArtikMan1994 Надо будет попробовать с нашим ts-loader как это взлетит)
@kirillunlimited
@kirillunlimited Жыл бұрын
01:26 Rollout? Может быть Rollup?
@sochidenis
@sochidenis Жыл бұрын
глючный и урезанный этот вайт, поэтому и быстрей работает за счет уменьшения зависимостей. Но React Developer tools в браузере не поддерживает, автоимпорт в редакторе тоже хуже работает с ним и зачем тогда эта скорость? Лучше бы про эти глюки расказали. Для пэтпроектов пойдет, но не более. Ждем турбопак.
@ufckngsht
@ufckngsht Жыл бұрын
Так как сборка как бы в браузере теперь надо переменные ноды перекидывать в браузер. Тот же "process" можно решить очень просто: plugins: [vue()], define: { "process.env": process.env, }, Я перешел на vite и время сборки уменьшилось с 10 минут на 2 минуты c билдом докера. Насчет количества пакетов не соглашусь: убрал webpack - поставил vite, убрал babel-loader, vue-loader - поставил @vitejs/plugin-vue.
@it-sin9k
@it-sin9k Жыл бұрын
Пробовал это "process.env": process.env,. У меня не завелось :( специально проект оставил в ожидании комментариев. Возможно у нас какой-то npm пакет специфичный используется в под зависимостях. По поводу количества пакетов имелось ввиду не прямых зависимостей, а под зависимостей. Если посмотреть зависимости Vite, то он требует установить как мминимум esbuils и rollup. А те в свою очередь устанавливают еще больше зависимостей
@microlabig4938
@microlabig4938 Жыл бұрын
@@it-sin9k тоже не заводилось, решил следующим способом: const { loadEnv } = require('vite'); module.exports = defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), 'REACT_APP_'); return { define: { 'process.env': env, }, //... } });
@kotekotekotekote-pn5hk
@kotekotekotekote-pn5hk 4 ай бұрын
Как говорится, смотрю в книгу, вижу фигу :)
@baileysli6235
@baileysli6235 Жыл бұрын
Душный коммент, но без него никак. "Вит", а не "Вайт"
@Dimidrol14
@Dimidrol14 Жыл бұрын
ВИТ
@TarasovFrontDev
@TarasovFrontDev 7 ай бұрын
Видео классное, но мотив перехода на вит мне не понятен. Подождать пару минут пока идет билд - я только рад! Налью чайку, глаза отдохнут, разомну спину. Сплошные плюсы!
@it-sin9k
@it-sin9k 7 ай бұрын
ахах) позитивное мышление!)
@Epic0n
@Epic0n Жыл бұрын
На вайте есть один реакт проект начатый с нуля, пока без проблем. К стати jest не дружит с модулями. Но есть решение vitest Угадайте от кого? )))
@it-sin9k
@it-sin9k Жыл бұрын
хех) надо точно заводить пет проект потестировать)
@tomtomson8099
@tomtomson8099 Жыл бұрын
Взял забайтил людей на комментарии своим вайт🤣
@it-sin9k
@it-sin9k Жыл бұрын
ага) не забайтишь не раскрутишься))
@deanwichester6412
@deanwichester6412 9 ай бұрын
билдимся это от слова билд (сборка)?
@it-sin9k
@it-sin9k 9 ай бұрын
да) все верно)
@kirillunlimited
@kirillunlimited Жыл бұрын
Не вайт, а вит - ты же сам показываешь скриншот с транскрипцией из документации
@cto_of_everything
@cto_of_everything Жыл бұрын
Вроде он же "Вит", не?)
@mr-pony
@mr-pony Жыл бұрын
это каким чудом у тебя большой проект на CRA Запускается за 9 секунд? У меня до минуты иногда уходит на около-топовом железе.
@it-sin9k
@it-sin9k Жыл бұрын
у меня макбук прошка на м1 процессоре, я уже начал думать, что дело в нем)
@user-yw9wx4lv2w
@user-yw9wx4lv2w Жыл бұрын
@@it-sin9k собирай проект на чем то послабее, и тогда сможешь оправдать для бизнеса переход на vite =)
@it-sin9k
@it-sin9k Жыл бұрын
@@user-yw9wx4lv2w боюсь, что бизнес за такие трюки мне оторвет что-нибудь)
@vladislavkori4798
@vladislavkori4798 Жыл бұрын
вит, не вайт)
@grantorino3465
@grantorino3465 Жыл бұрын
import { defineConfig, loadEnv } from 'vite', process.env = { ...process.env, ...loadEnv(mode, process.cwd()) }
Как стартовать новый проект в 2023 году?
10:36
АйТи Синяк
Рет қаралды 30 М.
1❤️#thankyou #shorts
00:21
あみか部
Рет қаралды 88 МЛН
Khó thế mà cũng làm được || How did the police do that? #shorts
01:00
Must-have gadget for every toilet! 🤩 #gadget
00:27
GiGaZoom
Рет қаралды 11 МЛН
Самый скользкий механизм в Redux
12:29
АйТи Синяк
Рет қаралды 14 М.
Все ли вы знаете о React key?
8:47
АйТи Синяк
Рет қаралды 36 М.
Vite and Module Federation Makes Micro-Frontends EASY!
27:36
Jack Herrington
Рет қаралды 82 М.
Vite для быстрой разработки и сборки приложения
10:49
Михаил Непомнящий
Рет қаралды 64 М.
React Reconciliation
11:53
АйТи Синяк
Рет қаралды 85 М.
Абсолютно новое мышление с Server Components
11:10
АйТи Синяк
Рет қаралды 18 М.
1❤️#thankyou #shorts
00:21
あみか部
Рет қаралды 88 МЛН