Node уровень 2 - AdonisJS
12:42
Пікірлер
@ВасилийПетров-л1й
@ВасилийПетров-л1й Күн бұрын
я бы про девтулз послушал обстоятельно академично
@ВасилийПетров-л1й
@ВасилийПетров-л1й Күн бұрын
можно аргументы в пользу того что общий store это недопустимо? допустим храним там пару токен:.юзер_id
@ВасилийПетров-л1й
@ВасилийПетров-л1й 2 күн бұрын
очень позитивный спикер приятно слушать а курнуть с ним наверное и за платона обсудить еще приятнее будет
@ЕгорДохлый-е8к
@ЕгорДохлый-е8к 2 күн бұрын
Автор. Подача. Топчик. Всем смотреть канал
@ЕгорДохлый-е8к
@ЕгорДохлый-е8к 2 күн бұрын
Наверно самый лучший препод на просторах www паутины. Попался на vue.js. а потом на канале и js и рнр. Жаль WP очень мало. Вообщем автору респект.
@a.riwall
@a.riwall 5 күн бұрын
ну вообще как я вижу, там все можно настроить до мелочей. Во-первых как я вижу, там можно выделять целые компоненты для отложенной гидратации, то есть у нас основной интерактивный контент, на который может нажать пользователь будет загружен. дальше гидратацию по ивенту на мобиле, как я понял, там для разных устройств (desktop, mobile), можно писать свои правила, то есть на мобиле это можно отключить или делать выборочной теми же компонентами. Поэтому если есть свободное время и необходимость в этих баллах, то думаю можно будет выделить на своем сайте места и случаи, где это можно применить.
@АлександраЗотова-щ6н
@АлександраЗотова-щ6н 5 күн бұрын
Подскажите пожалуйста, может ли из-за смены появиться проблемы с интернетом. Сделала все как на видео, перезагрузила и перестал работать интернет
@antonztxone
@antonztxone 6 күн бұрын
Этой части нет в плейлисте по Карте ключевых тем) Спасибо )
@dmitrylavrik
@dmitrylavrik 6 күн бұрын
Спасибо, видимо, какой-то глюк youtube при загрузке видео был, теперь добавил в плейлист)
@antonztxone
@antonztxone 6 күн бұрын
ммм..это именно по-этому Астро и с Астро-островами сейчас имеет вес в современных трендах?🤔 Спасибо за видео! Захотелось прийти на новые курсы ;)
@ЕгорДохлый-е8к
@ЕгорДохлый-е8к 7 күн бұрын
Привет из 2025:) 🎉 отличное видео!
@ЕгорДохлый-е8к
@ЕгорДохлый-е8к 7 күн бұрын
Отличное видео:) спасибо
@chip253
@chip253 8 күн бұрын
В тему - человек пришедший с Ларавела пытается сделать тоже самое в Prisma и Sequelize. В итоге приходим к - либо невозможно, либо с очень большими проблемами... Пришлось опробовать node-laravel. Но почему Sequelize такой недоделанный? Его якобы часто используют, но если присмотреться - используют в очень простом виде. Objection проще, и то интересней.
@МихалычЛермонтов
@МихалычЛермонтов 8 күн бұрын
Я, кстати, не просто видел, а работал долгое время над проектом, где фронт был на Ангуляре, который писал индус... Компоненты по 4-5 тысяч строк, чтобы не мешал дурацкий typescript, у всех переменных был тип any, куча кода jQuery. Хорошо, что я там бэкендом в основном занимался, но когда приходилось править фронт, то просто офигивал. Но платили хорошо, так что терпел.
@M615243
@M615243 8 күн бұрын
понятно что автор имеет ввиду, но зачем ноду называть языком программирования) представляю как у новичков крыша едет: "подождите, есть js это понятно, но что node.js - это тоже язык??? да ну его, это ит." стартовая страница heroku тоже тому пример, но там в пару к ноде они ещё и дот нет языком обозначили.
@dmitrylavrik
@dmitrylavrik 8 күн бұрын
Согласен, во втором видео уточню этот момент для новичков. У меня это как-то на уровне сленга укоренилось с начала 2010-ых. В духе "на чём прогаешь / на каком языке прогаешь? - на ноде" . Идёт как сокращение, чтобы долго не говорить "на javascript под node-платформу" и т.п.
@blazheiko777
@blazheiko777 9 күн бұрын
адонис все таки намного прикольнее неста...
@dmitry9463
@dmitry9463 9 күн бұрын
А если у нас один универсальный сторадж на все приложение, то как нам его типизировать? Описывать все возможные конструкции которые могут храниться в этом сторадже или просто психануть и указать any?
@darthl1ne
@darthl1ne 9 күн бұрын
для php уже давно есть roadrunner и аналоги
@darthl1ne
@darthl1ne 9 күн бұрын
26:27 есть же htaccess
@awenn2015
@awenn2015 9 күн бұрын
Если в названии написано что то нелогичное можно ли рассчитывать что и видео будет таким же? Как минимум то что нет такого языка как nodejs, собственн с каким языком вы тут тогда знакомитесь?
@DimaTagiev
@DimaTagiev 10 күн бұрын
То есть в Java или C#, или C++, если я буду писать код, и он, очевидно, по умолчанию будет однопоточным, если я это явно не укажу, то получаются и эти языки также однопоточные, а не многопоточные, судя по вашей логике с Node.js? Покажите мне язык где не нужно явно указывать, что мы распараллеливаем задачу? В том же Go есть оператор go, как явное указание параллельной операции
@dmitrylavrik
@dmitrylavrik 10 күн бұрын
Нет, имел ввиду, что в js и node мы не можем получить проблемы с потоками до тех пор, пока сами не запустим, например, worker threads. Если я сделаю топорный сигнлтон у класса в js, то он не может быть непотокобезопасным как в примере на java, потому что поток один. Если я подписался на клик по кнопке, он не скажет мне, что надо обёртку сделать, чтобы не было проблем с потоками. Ведь поток 1. А, например, в C# помню такую вещь, клик по кнопке обрабатываешь в десктопной проге, а она не даёт к полю класса обратиться, так как с ним может основной поток работать в это же время. И нужна потокобезопасная обёртка, иначе компилятор ругается. Т.е. есть языки, где многопоточность сама настигнет программиста. А есть языки, где проблем с потоками вообще быть не может, пока сам WebWorker или worker threads не задействуешь.
@DimaTagiev
@DimaTagiev 9 күн бұрын
@@dmitrylavrik Так это больше про то, кто как вещи называет. Я вам скажу больше, даже без worker_threads и многопоточности явной, в рантаймах js'а могут возникать race conditions на одной лишь ассинхронности, т.е. уже можно сделать вывод что по факту физически Нода априори не может быть однопоточной, ибо под неё со старта по умолчанию аллоцируются 4 потока системы для I/O операций, которые разруливаются LibUV, который по факту и есть Node.js, представляющий одну из его частей
@DimaTagiev
@DimaTagiev 9 күн бұрын
Да это не явная многопоточность, как в известных комплиируемых языках, мы ей напрямую так и не управляем, но также ведь мы, если не захотим и не управляем многопоточностью в том же Go) Если бы нода или браузер были однопоточными в единственном значении этого слова, без каких-либо но, то не было бы никакой асинхронности в том числе, ибо эти понятия тесно связаны
@DimaTagiev
@DimaTagiev 9 күн бұрын
С тем, что сам Js как язык однопоточный я соглашусь, но вот райнтаймы уже невозможно воспринимать без многопоточности, потому что по факту райнтаймы, что браузер, что нода, это C++ низкоуровневой код + аддоны. Т.е. Нода (C++ + JavaScript) многопоточный, а JavaScript сам по себе нет
@dmitrylavrik
@dmitrylavrik 8 күн бұрын
@@DimaTagiev ​ ну вот да, поэтому люди и спорят на эту тему. В том числе на youtube можно много противоположных мнений найти. Кто-то на сам однопоточный язык javascript смотрит, а кто-то на многопоточную среду выполнения (браузер, нода). Мне привычнее считать и называть это однопоточным. Потому что, даже если потоков под капотом у системы много, код мы пишем как в однопоточных языках. Но тут кому как удобнее)
@Don_Miguel
@Don_Miguel 10 күн бұрын
молодец
@АнтонСтасюк-е4р
@АнтонСтасюк-е4р 10 күн бұрын
Класс, хочу продолжение
@vladislavtomasciuc8273
@vladislavtomasciuc8273 10 күн бұрын
немного непонятно про кластеры было что это и зачем. Второй момент это откуда берутся настройки для того чтоб на сервере чтоб вместо ip с портом был домен
@dmitrylavrik
@dmitrylavrik 10 күн бұрын
Про кластер дополню в ролике про event loop. А на сервере я для nginx настроил reverse proxy. Т.е. обычный nginx, который умеет раздавать статику с домена, теперь все запросы клиентов проксирует к нашему node-скрипту.
@blazheiko777
@blazheiko777 10 күн бұрын
async await тоже не блокирует node js в соседней вкладке или в другом браузере запрос будет проходить нормально, ожидание происходит только внутри конкретной функции
@dmitrylavrik
@dmitrylavrik 10 күн бұрын
Да, конечно. В примере он только наш текущий request заблокировал, потому что в response данные только в методе end пишем, а вызов response.end расположен ниже await.
@yakut54
@yakut54 10 күн бұрын
Диман, привет, мой первый сансей! ✌️
@timm4268
@timm4268 10 күн бұрын
Оо, вот это очень даже кстати! Спасибо за подгон 👍
@korobkaneskvika2740
@korobkaneskvika2740 10 күн бұрын
Спасибо за ролик, было полезно! Буду ждать следующий
@ValentinStartsev
@ValentinStartsev 10 күн бұрын
Отличное начало, ждем продолжение. Все на ноду!
@ImmortalBest
@ImmortalBest 10 күн бұрын
телеграм бота сделал на ноде и базу прикрутил postgreSQL, все шикарно
@grantorino3465
@grantorino3465 10 күн бұрын
это все хорошо, но как бы писать все роуты в одном файле и одном масиве тоже как бы подход так себе. По нормальному роутинг какждого модуля находится в отдельном слое модуля и все они автоматически собираются в одно место возможностями сборщика
@ЕгорЛазука-й1э
@ЕгорЛазука-й1э 11 күн бұрын
Здравствуйте, спасибо за видео. У меня сложилось от реализация ssr на redner to pipe stream впечатление, что практически то же самое spa получим. То что можем отрисовать - рисуем сразу. Там где ждём загрузку - крутим обручи и ждём данных для показа.
@valeriyk7565
@valeriyk7565 11 күн бұрын
Очень доступно объяснил!
@romanapanovich5267
@romanapanovich5267 13 күн бұрын
ООП не нужно в php. Это какая-то шизофрения всеобщая. Но я просмотрю сейчас на ускоренке Ваши доводы, всегда полезно послушать другую точку зрения
@CheIIau
@CheIIau 14 күн бұрын
в доках реакта так прямо и написано: If you want to build a new app or a new website fully with React, we recommend picking one of the React-powered frameworks popular in the community.
@ferraritestarossa
@ferraritestarossa 16 күн бұрын
Почему для курса выбор ORM пал на TypeORM? Судя по количеству скачиваний Prisma ORM будет вдвое популярнее Sequelize и TypeORM вместе взятых. И к тому же Prisma отличается большей типобезопасностью и более лаконичным синтаксисом описания моделей.
@iq240-1
@iq240-1 16 күн бұрын
Попробуйте поставить призму на сущестующую бд и проект, а потом поделать миграции. Удовольствие гарантировано)
@ferraritestarossa
@ferraritestarossa 15 күн бұрын
@@iq240-1 Внедрение нового инструмента и миграции в существующем проекте всегда имеют сложности. И эту ситуацию уже можно назвать частным случаем, который не всегда и не у всех возникает. На курсе же, как я понимаю, будет рассмотрение проекта, который создаётся с нуля. Поэтому мне видится более выгодным применение понятных и популярных инструментов.
@dmitrylavrik
@dmitrylavrik 15 күн бұрын
Не, мы берём не TypeORM, а Sequelize. Во многом по той причине, что она знакома участникам node уровень 1. В целом выбор ORM как будто бы не является принципиальным вопросом. Новичкам какую тимлид потом на работе скажет использовать, такую и придётся. Тут не угадаешь, у prisma 2кк скачиваний в неделю, у TypeORM и Sequelize по 1кк у каждого, т.е. все популярные. Я про Prisma как-то подзабыл после прочтения легендарного issue на github, когда они с 2021 по конец 2023 игнорировали join - github.com/prisma/prisma/issues/5184 Сейчас вроде бы внедрили везде кроме mariadb.
@ferraritestarossa
@ferraritestarossa 15 күн бұрын
А тогда понятно. Для простоты обучения по курсам вполне удобно. Только, если это обстоятельство не принимать во внимание, то для NestJs, который заточен под TS, выбор Sequelize выглядит немного странно, так как у него работа с TS не является сильной стороной.
@korobkaneskvika2740
@korobkaneskvika2740 16 күн бұрын
Спасибо за ваши ролики, Дмитрий
@vanmihaylovich
@vanmihaylovich 17 күн бұрын
1:05 дёргается страница от того, что отсутствуют размеры блоков в которые загружается контент.
@awenn2015
@awenn2015 17 күн бұрын
13:15 прям понимаю эту боль, помню когда надо было на реакте сделать мини приложение на php сайте (типо виджетов) а потом начал думать как это превратить в SSR, либо второй nodejs сервер поднимать и из PHP слать запросы за HTML в express либо в PHP дублировать разметку и потом гидрировать react приложение, оба варианта такие себе как по оптимизации так и по самой идее)
@awenn2015
@awenn2015 17 күн бұрын
Помню делал свой велосипед с авторизацией с ролями и разделением прав доступа по ним, а потом узнал что есть laravel по котором это все есть из коробки, но в качестве обучения думаю норм тема, хотя там в теории ничего сложного, каждой роли закинуть список пермишенов и при запросе проверять есть ли в этом списке пермишн из роута
@yakut54
@yakut54 17 күн бұрын
Диман, привет 👋 Седьмой год с тобой! С праздниками тебя прошедшими!
@dmitriykret8938
@dmitriykret8938 18 күн бұрын
👍👍👍
@awenn2015
@awenn2015 18 күн бұрын
27:20 а как же старый добрый php который отдает весь html и вот тебе пожалуйста классический SSR, только без реактивности, хотя в laravel есть шаблонизатор который частично добавляет серверную реактивность, не совсем понимаю как это работает так как только по верхам щупал livewire, но с ходу выглядит прикольно, хотя никакого lazy тут конечно не будет но зато без нагромождений))
@kegorfx
@kegorfx 18 күн бұрын
Аксиома Эскобара тут прям подходит 🎉
@ЕгорЛазука-й1э
@ЕгорЛазука-й1э 11 күн бұрын
😂
@awenn2015
@awenn2015 18 күн бұрын
2:30 чет не совсем понимаю, мы же можем в каком р будь компоненте на стороне сервера вызвать асинхронщину или это не будет работать? Либо как альтернатива грузить данные до renderToString
@mihaaaaaaaa1111
@mihaaaaaaaa1111 19 күн бұрын
Здравствуйте, 8 января акция еще будет действовать? Или когда последний день акции?
@dmitrylavrik
@dmitrylavrik 19 күн бұрын
Добрый день! 8 акция ещё будет, но цены уже могут подрасти. Лучше сейчас оставить заявку на страничке, там сгенерируется постоянная ссылка на заказ с зафиксированными ценами.
@valeriyk7565
@valeriyk7565 19 күн бұрын
Спасибо за труд!
@АлександрМельник
@АлександрМельник 20 күн бұрын
Разве не будет жутко томозить если включить новую стратегию гидротации, при которой каждый компонент карточки товара получает свой js при попадании во вьюпорт и при этом пользователь резко листнет пальцем этот список. Ведь нужно будет одномоментно запустить гидротацию для сотни товаров. Пока это делалось при загрузке страницы, пользователь воспринимал это как "общее торможение". Пользователь готов немного подождать при открытии страницы. Но когда страницы открыта и уже потом с ней случаются тормоза при листании, вот это уже воспринимается пользователь как баг и вызывает отторжение.
@dmitrylavrik
@dmitrylavrik 18 күн бұрын
А откуда сотни товаров? Всегда есть постраничная навигация. Сделана она в классическом виде или в виде бесконечного скролла - не важно, в любом случае, в ответе от сервера будет ограниченное количество карточек, например, 20 на странице. Термин гидратации актуален только для них. А если по скорллу потом ещё сотни грузятся и тормозят, то это обычные тормоза, это с гидратацией связано не будет.
@АлександрМельник
@АлександрМельник 20 күн бұрын
спасибо. Возникла такая мысль. Разве эти новшества и будем откровенно говорить "костыли" с гидратацией не начинают разрушать саму идею реактивных фронтенд фреймворков? Ведь помните с чего начинался angular, react и vue - основным лозунгом было "думайте на уровне данных, а не на уровне разметки. Измените значение переменной в коде и все связанные с ней визуальные компоненты РЕАКТИВНО перерисуются". А теперь получается, что применение ssr и гидротации рушит это правило. Человек получает html ку и видит во вьюпорте 3 карточки товара, которые получили свой кусок js и только после этого с ними возможно взаимодействие. Только теперь на них можно нажать кнопку - в избранное. Нажатие на эту кнопку вызывает запрос на сервер для помещения товара в таблицу базы данных избранного. Где то в самом низу страницы у нас есть блок -" список избранного" в котором, по макету, должны отображаться карточки товара избранных товаров. Когда страница рендерилась ssr этот список был пуст, следовательно сейчас там пусто. Когда человек нажимал на кнопку в товаре - "добавить в избранное" нарушился принцип реактивной связанности между данными и их представлением на странице, потому что моментально отобразить 3 карточки в списке избранного мы не сможем- компонент еще не гидратирован. И получится что когда человек долистает до этого блока в самом низу сначала он увидит что там пусто, потом произойдет гидротация (блок оживет), js сделает запрос на сервер получит списки избранного и только после этого отобразит. Даже если мы будем считать что мы такие крутые спецы, знаем что есть еще один ускоряющий костыль как "оптимитичная стратегия работы с сервером", и храним списки избранных товаров где то на уровне js, а не в базе, то все равно нарушился принцип реактивной связанности данных и внешнего вида. Человек вверху страницы добавляет товары в избранное (потому что они уже гидратированы), а внизу страницы компонент со списком избранного остается пустым (потому что он не гидратирован) и будет визуально перерисован когда попадет во вьюпорт - больше нет реактивности.
@dmitrylavrik
@dmitrylavrik 18 күн бұрын
Да, согласен, это может вызвать дополнительные сложности. Надёжнее всего подключать отложенную гидратацию для тех компонентов, которые тяжёлые и не зависят от состояния приложения. Например, если в карточке товара тяжёлый слайдер, то только для него hydrateOnVisible или даже hydrateOnInteraction(['click']). А сама карточка, в которой есть кнопки управления товаров, допустим, гидратируется сразу. Ещё есть забавный кейс с полным отсутствием гидратации. Например, markwond контент новости из базы на сервере превратился в корректный html, а на клиенте пусть лучше vue с ним вообще не работает. Т.е. нулевой расход ресурсов на клиенте на данный компонент. Тема очень свежая, думаю, ещё куча нюансов всплывёт на практике.
@lemexaxa
@lemexaxa 20 күн бұрын
Отличная серия видео по Vue. Респект!
@ДмитрийЗинченко-м6с
@ДмитрийЗинченко-м6с 25 күн бұрын
Блин, гениальные объяснения 🎉