Можно я спать пойду? Я не могу уже все смотреть, я устал 😊 ладно еще два видосика и спать 😂
@Reservoirv7 күн бұрын
Добрый день, подскажите пожалуйста по поводу переменной :query в роуте.... не могу понять как это работает.... Вот так: "console.log('/posts/query/:query'.match('/posts/query/test')); " это выдает "null", а по факту в приложении вроде работает и выдает "{ query: 'test' }". Мне бы просто понять почему и как это работает в коде, и почему не работает напрямую в "console.log()". И вообще, как ":query" приравнивается к "test"....
@EasyITChannel4 күн бұрын
Для обработки роутов используется сторонняя библиотека route-parser. Единственная в проекте. Я об этом упоминал. Обратите внимание на импорты. Роуты в проекте это не просто строки, а экземпляры класса Route и именно у них вызывается match. Когда Вы вызываете '/posts/query/:query'.match('/posts/query/test') то сравниваете строку '/posts/query/:query' и строку '/posts/query/test'. Эти две строки абсолютно точно не матчатся.
@Reservoirv2 күн бұрын
@@EasyITChannel Понял, спасибо)
@XNMEPA8 күн бұрын
Спасибо большое за прекрасный урок!
@---Maksim---8 күн бұрын
Есть неточности в видео: 1. Тело промиса не выполняется ни в каком отдельном потоке, выполняется синхронно в Call stack 2. В очередь микрозадач попадают именно коллбэки, переданные в then, catch, finally, соответственно после resolve или reject. 3. Если мы зарезолвили промис сразу (Promise.resolve()), то сам промис никуда не попадает, поведение будет такое же как в пункте 2, просто тут отсутствует само тело промиса.
@EasyITChannel4 күн бұрын
Спасибо, что нашли время на комментарий. 1. Синхронно? т.е. о Promise.race Вы не слышали? И тело промиса может заблокировать рендер UI? Интересненько. Или у Вас какая-то особенная интерпретация понятия "синхронно"? 2. Так точно, об этом я и говорю, только другими словами, для простого понимания и запоминания. 3. Т.е. Вы на полном серьезе думаете что Promise.resolv() возвращает какой-то особенный промис, а не точно такой же точно как любой другой, но зарезолвленный в рамках текущего макротаска? С точки зрения обработки промиса выходит есть мега-разница есть тело у промиса или нет тела? Совет - не нужно плодить сущности там, где все намного проще.
@Reservoirv11 күн бұрын
Привет, а почему приложение работает только с vite, а например с Parcel или Webpack не хочет работать? Сам роутинг не работает...
@EasyITChannel11 күн бұрын
Это потому, что многое в vite реализовано автоматически "out of the box", а в том же webpack любую мелочь надо делать ручками. Дев сервер vite автоматически перенаправляет все запросы index.js. В webpack поддержку для history api надо настраивать отдельно в конфиге, что-то типа: devServer: { historyApiFallback: true, // вот это open: true, hot: true, port: 3000, static: { directory: path.join(__dirname, 'public'), // Директория для статических файлов }, }
@Reservoirv11 күн бұрын
@@EasyITChannel Спасибо большое! Разобрался с Webpack.... и с Parcel тоже. Все супер!
@johngalt949415 күн бұрын
8:40 - Что значит "Suspense берёт на себя реакт-роутер"? Как нам указать пролоудер при работе с ".lazy", если он не дружи с "Suspense" ?
@EasyITChannel15 күн бұрын
При использовании "нового" React Router решается это немного по-другому. В планах есть доснять последний ролик в этом цикле с объяснением как раз этого момента. Если кратко - нужно использовать функцию defer из react-router для возврата данных и компонент Await внутри Suspense. Примечание: это не работает с SSR.
@johngalt949413 күн бұрын
@@EasyITChannel Понял спасибо, но эта реализация подходит для функции "lazy()" (из реакта), а не для ".lazy" (из роутера). А можно ли как -то сделать фалбэк (прелоудер) с использованием проперт ".lazy()" из роутера?
@EasyITChannel13 күн бұрын
Конечно, я как раз об этом написал выше. Нужно использовать defer при возврате данных в роуте. А в компоненте нужно использовать Await внутри Suspense.
@johngalt949412 күн бұрын
@@EasyITChannel 1) В актуальной версии роутера (7+) функции "defer()" нет (её удалили), вместо неё используются обычные промисы. Честно говоря я даже не понял зачем она нужна была. 2) Т.е. реализовать эфект прелодера (fallback) при использовании проперти ".lazy()" марушрутера для загрузки компонента-страницы точно-такая же как без ".lazy" (Через <Await /> и "import()" или через "React.lazy()" и "import()"). В связи с этим вопрос: 3) Получается проперти ".lazy()" маршрутера нужно использовать только тогда, когда мы хотим лениво подгрузить значения для каких-то других проперти маршрутера кроме ".element", т.к. для ленивой подгрузки только ".element" он бесполезен? (т.к. мы всё равно вынуждены использовать <Await /> и "import()" или через "React.lazy()" и "import()")
@EasyITChannel10 күн бұрын
@@johngalt9494 Скоро будет видео, в нем всё подробно расскажу.
@Fillmore634b16 күн бұрын
Спасибо автору, такие видео - редкость и встречаются только в русскогоязычном ютубе. У меня вопрос к автору - можно ли wasm использовать в "настоящих" проектах (серьезных, за которые много денег заплатили и сайт должен деньги приносить)? Я знаю что к примеру js вкупе с хаками с css дает возможность узнать айпи зашедшего без уведомления. Или даже каким-то образом узнать акк соц сети зашедшего и позже к нему уведомление прислать (я не знаю как - мб получают доступ к кукам). Это все из того что я слышал - что бизнес использует это. Я таким не занимался (и сайты не делал), мне интересны такие фичи в вебе. Я еще не говорю про порно-сайты, казино - где таких хакерских штучек наверняка используется гораздо больше (даже против ддоса того же). Или даже сквозь впн узнают реальный айпи человека с легкостью - такое реализуемо с wasm или только js?
@EasyITChannel15 күн бұрын
WASM сам по себе не работает, только через JS. У него нет доступа к браузеру напрямую, нет доступа к DOM. В JS, то что Вы пишете, реализуется по-другому, и в 99% случаев виноват сам юзер. Классика - переход по непонятной ссылке с одновременно залогиненным пользователем в другой вкладке браузера. Как всегда уровень безопасности обратно пропорционален уровню удобства. Сделайте работу 100% безопасной и только 1% юзеров будет способен работать в таком окружении. Не будет редиректов, автологинов, сохранения паролей, и т.д.
@Fillmore634b15 күн бұрын
@@EasyITChannel теперь понял, благодарю за такой ответ!!
@CuriousSpy16 күн бұрын
Проблема wasm только в том, что js работает с utf16, а rust с utf8
@EasyITChannel16 күн бұрын
Ну есть такая проблема, решаемая даже ручками с помощью TextEncoder. Но уже в этом примере мы используем wasm-bindgen, а этот модуль решает вопрос автоматически.
@CuriousSpy15 күн бұрын
@@EasyITChannel я не про совместимость, а производительность
@EasyITChannel13 күн бұрын
Ну так и видео об этом. Если издержки при передаче данных в wasm большие, то использовать его не надо. Речь ведь не идет о том, что обязательно нужно везде использовать wasm. Если выигрыш от обработки внутри wasm превышает издержки - можно использовать. Хотя, нужно упомянуть и о том, что бывает и так,что нет выбора и плевать на издержки. Есть, например, закрытая библиотека и прикрутить ее по-другому невозможно.
@andrewkuzmin440016 күн бұрын
11:45 ructc != rustc Но в целом, очень познавательно! Спасибо автору за работу!
@EasyITChannel16 күн бұрын
@@andrewkuzmin4400 спасибо за внимательный просмотр :) Такое бывает.
@nikitashamberger963916 күн бұрын
Спасибо автору за такой интересный и информативный ролик
@EasyITChannel16 күн бұрын
@@nikitashamberger9639 Спасибо за поддержку.
@PragmaticIT16 күн бұрын
Ахаха поржал когда автор сказал что виндовс не очень хороший выбор для Веб разработчика 😂😂😂 Уже как 3 года работаю под wsl и горя не знаю
@EasyITChannel16 күн бұрын
Работа под виртуалкой всяко хуже полноценной системы. Оправдано только если проект простенький и денег на рабочую машинку нет/жалко, приходится все на одной системе делать. Ну ещё вариант не получается с винды спрыгнуть хотя-бы не время работы. Сам на wsl никогда не работал - я с 2000 года виндой не пользуюсь совсем, но коллеги кто с wsl перешли на Mac чуть ли не до потолка прыгали от счастья.
@12345_qwerty15 күн бұрын
@@EasyITChannelвообще не важно какой проект. Сейчас никакой разницы нет под чем работать, возможно что наоборот виндовс наиболее удобный вариант так как совмещает в себе плюсы двух систем за счет wsl
@CuriousSpy13 күн бұрын
@@12345_qwerty проблема с wsl начинается тогда, когда начинаешь работать с железками (гпу для игр), юзб и тд. Сейчас ситуация гораздо лучше, чем было раньше и обходные пути присутствуют. С другой стороны ни один десктоп на линуксе не работает также быстро и плавно как на винде. Уже много лет мечусь с дуалбута до всл и hyperv - с wsl на данный момент самый лучший опыт
@EasyITChannel11 күн бұрын
Попробуй мак ;)
@EasyITChannel11 күн бұрын
@@12345_qwerty это очень субъективно. Виндоуз удобна тем, кто к ней привык, только и всего. Я еще до знакомства с windows версии 3.0 работал с несколькими ОС, поэтому уже тогда воспринимал эту ОС как одну из многих, чем-то лучше, чем-то хуже. Ну и мне, после 22 лет на линуксе (только на нем, и на работе и дома) и 3 лет на маке - виндоуз предельно не удобна. Просто жесть как неудобна, реально. Мне удобнее busybox, если понимаете о чем я. Вот при переходе с линукса на мак, кстати, вообще неудобства не ощутил, скорее наоборот. По поводу - не важно какие проекты - улыбнуло. Как и странная уверенность в том, что виртуалка внутри другой системы может конкурировать с нативной системой на том же железе.
@Comm1ted17 күн бұрын
Интересно!
@alexanderaew589720 күн бұрын
И как на реальные часы скинуть проект?
@EasyITChannel17 күн бұрын
Нужно сбилдить релиз версию, подключить часы проводом к компьютеру и скопировать результат билда на появившуюся флешку.
@GG.MONSTRso223 күн бұрын
скиньте код мен как то лень писать
@EasyITChannel17 күн бұрын
Если посмотреть в описание под видео, то там есть ссылка на исходный код. Причем, это актуально для любого видео на канале.
@kitmonglive29 күн бұрын
используется tampermonkey. даже пофигу сделай платно ну то есть только ежемесячно. этим скриптом будут пользоваться милионы ............... ты можешь написать скрипт который бы возвращал плейлисты слева выпадающим списком на youtube. когда нажимаешь кнопку показать ещё и появлялся список плейлистов. и так же добавить окошко поиска в окне когда добовляют видео в плейлист, чтобы найти нужный плейлист и добавить видео в него. используется tampermonkey. даже пофигу сделай платно ну то есть только ежемесячно. этим скриптом будут пользоваться милионы
@ДмитрийГусаров-к5оАй бұрын
да что ты черт возьми такое несеш???
@EasyITChannelАй бұрын
а что не так, разрешите поинтересоваться?
@ДмитрийГусаров-к5оАй бұрын
@EasyITChannel есть спецификация html5 и вней раздел про ивент луп - попробуйте почитать
@EasyITChannelАй бұрын
:) возможно Вы не поняли о чем этот ролик? Кроме "почитать" еще есть "понять прочитанное". В ролике речь идет о практическом понимании, о том как это работает на практике. Как это реализовано в "металле" ;) Будете с этим спорить? Что-то из изложенного, на самом деле не так и Вы можете это доказать практическим примером?
@n_u_b_o_mАй бұрын
Очень полезно. Спасибо за исходный код. По настоящему достала эта дурацкая музыка, особенно когда с трудом разбираешься в расплывчатом и нечетком коде ролика...
@EasyITChannelАй бұрын
Спасибо за просмотр и обратную связь. Исходный код есть у почти всех видео на канале. Чтобы все буковки были видны четко и не расплывались рекомендую смотреть в 1080p, это значительно упростит разбор кода. У фоновой музыки есть важная причина. Вряд ли Вам будет комфортно слушать как в фоне воет воздушная тревога, проезжает трамвай, лают собаки, работает пылесос у соседей, скрипит кресло и т.д. А переозвучивать по 100 раз или часами чистить звук у меня, к сожалению, нет времени - работать надо. Поэтому простой Noise Gate и нейтральная фоновая музычка решают проблему.
@n_u_b_o_mАй бұрын
@@EasyITChannel Приношу Вам свои извинения. Я сначала скачал весь плей лист, а потом смотрел в низком разрешении. К музыке постепенно привык. После просмотра ролика окончательно отказался от React и подписался на Ваш канал. Огромное Вам спасибо! Жаль, что «прикоснулся к прекрасному» с некоторым опозданием…
@Sound-Of-Wisdom.Ай бұрын
Отличное объяснение! Теперь всё ясно Очень полезный хак, спасибо за доступную подачу материала! 🔥👏
@EasyITChannelАй бұрын
Спасибо за поддержку.
@amat0ruАй бұрын
👍в реакте вообще есть что нибудь что без костылей?👍
@EasyITChannelАй бұрын
Тут зависит от того, что считать костылями. Есть "стандартный подход" работы с компонентами в реакт. "Данные в компонент через пропсы, из компонента - через колбэки". Это отлично работает в большинстве случаев. Но в сложных, и особенно в высоконагруженных приложениях такая схема работает не очень (запредельная сложность, лишние ре-рендеры, куча зависимстей), поэтому есть встроенные механизмы, упрощающие работу в сложных случаях. Это уже продвинутый уровень и он как-бы нарушает кажущуюся простоту и логичность ;) Но так в любом фреймворке. В документации всегда демонстрируют примитивный пример и говорят - во как у нас всё легко и просто. Потом с ростом приложения часто упираются в тупик и начинают городить костыли. Причем, тупик этот появляется тем быстрее, чем меньше опыта работы с фреймворком, чем хуже понимаешь его сильные и слабые стороны.
@Планшет-л9е2 ай бұрын
Респект за то что правильно x - называете экс, а y - уай. Мне приятно слушать грамотную речь. Это говорит о многом.
@EasyITChannel2 ай бұрын
Ну, я знаю как правильно, но есть грешок - часто тоже говорю как у нас принято, а не как правильно. Вероятно, потому что когда голосом среди своих обсуждаем, то привыкаешь к сложившейся терминологии. Когда работаешь в англоязычной среде, то это выравнивает в другую сторону, хотя там тоже есть свои нюансы, даже нэтивы не всё называют/произносят идентично.
@Hits11332 ай бұрын
Отлично, а как потом в бандле их искать?
@EasyITChannel2 ай бұрын
А зачем их искать в бандле? Бандл загружен, шрифты подключены, загружены, им назначено имя. Нужно просто указывать шрифт в стилях в font-family по имени и всё.
@Hits11332 ай бұрын
@EasyITChannel Я подключил шрифты, у них путь допустим: ../../src/fonts/Arial.ttf В бандле потом они теряют свои пути, ну либо я что-то не так делаю
@Чинчопа-ы3з2 ай бұрын
чел харош кста
@Чинчопа-ы3з2 ай бұрын
@easy_it/cordova-ser-generator это вы сделали себе форк генератора в свой репозоиторий и доработали его? А что именно вы доработали?
@dmitryts90932 ай бұрын
Очень полезный контент! Подобные кейсы часто встречаются
@EasyITChannel2 ай бұрын
Вы правы, почти все видео делаю исходя из опыта в продакшн. Правда иногда это понятно только тем, кто тоже имеет подобный опыт ;)
@dmitryts90932 ай бұрын
Круто, отличное видео Лайк, подписка)
@EasyITChannel2 ай бұрын
Спасибо за просмотр.
@ЕвгенийПоляков-с7е2 ай бұрын
Привет. Подскажите кто нибудь, почему в папке Example1 две одинаковые папки EasyRunTracker с одинаковым набором папок и файлов?
@EasyITChannel2 ай бұрын
Добрый день, очень сложно сказать что-то по поводу этого вопроса. В Git находится одна папка с одним набором файлов. В этом легко убедиться если зайти через веб-браузер по ссылке. Мне, если честно еще не доводилось увидеть двух одинаковых папок рядом, по моему скромному опыту операционные системы не допускают такого.
@ЕвгенийПоляков-с7е2 ай бұрын
@EasyITChannel я имею ввиду папки проекта в вашем видео, но и в моем vs code тоже самое.
@EasyITChannel2 ай бұрын
ах это :) Это среда разработки так отображает. Это одни и те же файлы, example1/EasyRunTracker это гит репозиторий, а та что в корне это проект Манки скрипта. Вот так отображается. Если открыть проект прямо из папки проекта, а не из корня репозитория то будет одна папка. Но это ерунда, не берите в голову.
@andreynaralchuk43822 ай бұрын
Спасибо за видео
@EasyITChannel2 ай бұрын
И Вам спасибо за просмотр.
@nikitakopot2 ай бұрын
Спасибо)
@MaxFomin-g8b2 ай бұрын
👍👍👍👍
@СашаАлександр-е4м2 ай бұрын
Выглядит,как проект на коленки, хотя так и есть. Но спасибо, было интересно.
@EasyITChannel2 ай бұрын
Спасибо за просмотр.
@-ebaka2 ай бұрын
Спасибо🙏💕 сколько времени вы нам сэкономили, не передать
@EasyITChannel2 ай бұрын
Спасибо на добром слове.
@snowzilla993 ай бұрын
Вы очень крутой, очень рад, что нашел ваш канал. Спасибо за контент! У вас очень много прям крутейших видео с важными темами.
@EasyITChannel3 ай бұрын
Большое спасибо за поддержку, стараюсь выкладывать полезное, в первую очередь, с практической точки зрения. И в максимально простом изложении. Не всегда получается, но цель такая есть.
@marpusik12773 ай бұрын
спасибо 🙏
@Dimidrol144 ай бұрын
Посмотрел видос - еще больше запутался
@EasyITChannel3 ай бұрын
Так бывает. Особенно когда и изначально четкого понимания не было, а были догадки навеянные знанием как это устроено в других языках. Более новое видео посмотрели?
@Graymar1124 ай бұрын
Vite сборка в режиме dev работает, а билд крашится почему то
@EasyITChannel3 ай бұрын
Скорее всего связано с тем, что момента выпуска видео прошло уже порядочно времени и версии программ поменялись. Как дойдут руки - поправлю.
@EasyITChannel3 ай бұрын
@Graymar112 Обновил репозиторий. Просто обновил пакеты до последних и установил type в package.json - для новой версии vite это обязательно. Должно работать.
@marpusik12774 ай бұрын
куда пропали?😇
@EasyITChannel4 ай бұрын
Работы навалилось много. Нет времени на хобби ;)
@marpusik12774 ай бұрын
куда пропали? 😇
@K1appy4 ай бұрын
спасибо за контент и труды 🙂
@EasyITChannel4 ай бұрын
Пожалуйста. Главное, чтобы польза была. Вам тоже спасибо за поддержку.
@biLLie_wiLLie4 ай бұрын
а где первая часть?
@K1appy4 ай бұрын
на канале
@EasyITChannel4 ай бұрын
В тот момент когда я об этом говорю в правом верхнем углу появляется ссылка на видео. вот такая kzbin.info/www/bejne/mYfdqHilrLGYZpo
@НиколайКалужских-щ6м4 ай бұрын
напишите кто-нибудь комент с таймкодами, буду очень признателен
@EasyITChannel4 ай бұрын
Добавил.
@voxel15474 ай бұрын
Да, устноавка пакетов действительно сложна, мне пришлось написать целых 10 букв и нажать тяжелую кнопку "Ввод", а про какойто "Пробел' коих в командах много я вообще молчу. Че за пробел, не понятно, ведь этой буквы даже в алфавите нет, напридумавают эти линуксоиды своих пробелов...
@marys81914 ай бұрын
Так а где видео с циферблатами?
@EasyITChannel4 ай бұрын
Так а нет его. По крайней мере пока.
@OwezAtajanow4 ай бұрын
Спасибо большое ❤❤❤
@EasyITChannel4 ай бұрын
И Вам спасибо за просмотр. И поддержку.
@vladostema5 ай бұрын
Музычка зачет
@asa_0155 ай бұрын
Спасибо. Очень полезно. Если будет возможность раскрыть тему weakMap и weakSet и есть опыт работы с ними, поделитесь, пожалуйста
@EasyITChannel5 ай бұрын
Хорошо. Спасибо за просмотр.
@marpusik12775 ай бұрын
Спасибо 🙏
@alenache15 ай бұрын
символ это ж буква, че тут непонятного
@EasyITChannel5 ай бұрын
И то верно ;)
@alenache15 ай бұрын
@@EasyITChannel 😂
@АлександрСергеевич-и4ы5 ай бұрын
лайк неглядя
@romanpit4you3615 ай бұрын
Спасибо!) Как раз столкнулся с заменой 1 и последнего элемента местами)