#31 Ключевые тренды 2025: что ждет стейт-менеджмент в будущем? | Артём Арутюнян
Привет друзья с вами Кирилл Мокевнин ведущий подкаста организованное программирование тема сегодняшнего подкаста стейт менеджеры во фронтенде и функциональное функциональное реактивное программирование которую мы обсудим с Артёмом Арутюняном. Артём привет привет Ты разработчик реатомакс пишут Ну как минимум про него слышали у него есть определённая популярность это интересная концепция ты классна там разбираешься в менеджерах состояний знаешь разные всякие штуки про фронтенд вые так сказать передовую Да фронтенда И вот сейчас мы с тобой наверное всё это обсудим зацепи стейт менеджера зацепи Local First который мы с Андреем ситникове зацепи вообще куда всё это катится почему оно такое какое есть Веришь ли ты в будущее фронтенда не все верят Да ну и соответственно Я так понимаю твоя очень тема которую ты любишь и про которую ты пишешь И кстати я подготовился Читал твои специально статьи перед созвона собственно про реактивное и реактивно я всё в забываю порядок слов фун реактивно функциональное программирование F Да ну в основном я про реактивное программирование стараюсь как раз таки в общем потому что вот сходу такой наброс сделаю в документации к реакту Может быть сейчас это убрали Но раньше точно было написано что это не функционально реактивная библио Вот то есть она не использует принципы функционально реактивного программирования я с этим полностью согласен она использует только принципы реактивного программирования То есть я считаю что рект реактивный Вот это сходу чтобы поджечь Короче все сидящие места наших слушателей Ну и можно про это в том числе поподробнее поговорить да давай зна С чего нам бы те со своим мнением да то есть то что вот он рассказывал но есть независимо от того Какое у него представление об этом в принципе само по себе движение есть действительно проблема связанная именно подчеркну кстати не все поняли после прошлой этой штуки он Понятное дело что когда мы на подкасте говорим мы очень многие вещи либо упрощаем либо Ну это не обучение где чётко всё построено и поэтому я по отзывам увидел что многие неправильно поняли его слова в том плане что типа он так предлагает делать всё естественно Нет он об этом даже оговорился что речь шла именно про веб-приложения это как правило толстые по сути клиенты которые работают в браузере у которых есть определённые требования сильно отличающие их от классических именно вебок дов и всего остального Где создать сохранить и так далее да то есть это Например Фима какая-нибудь То есть это там где у тебя прям вот очень много происходит на клиенте и это должно работать очень мягко Вот и действительно Я это постоянно наблюдаю вот эти вот все разговоры и в софте когда софт движется в эту сторону то есть вот я буквально Мы сейчас с тобой об этом разговаривали я буквально недавно откл на одно такое приложение которое как раз пишет что следующая версия будет уже работать по принципу Local First и ты как человек который со стейт менеджерами вообще на Ну очень близко Да вот что ты думаешь про всю эту историю туда ли это идёт или это Параллельный какой-то мир первая мысль про Local First Local First в первую очередь есть какие-то концепции и есть к этим концепциям технические решения так вот концепции стоит применять концепции очень хорошие - технические решения отдельная большая сложная тема то есть не обязательно там тащить какой-то S Engine чтобы э добавить немножко оптимистично приложению Да ну это и так понятно но мне кажется важно Это проговорить потому что вот есть второй момент я стейт менеджерами занимаюсь очень так активно В том числе потому что у меня есть личная любовь к качественному состоянию на клиенте то есть Я вообще продвигаю такой концепт что у у нас в современной разработке давай так в общем и целом в подавляющем большинстве случаев не надо использовать классическую архитектуру по разделению там доменного слоя и каких-то более системных доменов там представлений или ещё чего-то а нужно грубо говоря там лепить всё вместе звучит Это сходу плохо но на самом деле там есть конечно какие-то более принципы адекватные и смысл на самом деле который хочу донести это то чтоль ему конечно важно как он добавил какой-то товар в корзину но ему в современном конкурентном скажем так мире разных приложений сайтов Там и так далее в том числе важно это сделать удобно и он очень он является очень важной частью бизнес продукта в целом и собственно чтобы сделать качественный весь 90% всего юкса состоит из локального состояния То есть это анимации это какая-то какие-то подсказки это более быстрые реакции на действия пользователя это дополнительные какие-то в буквальном смысле состояния то есть пользователю не надо там не знаю перезагружать страницу чтобы что-то получить или ему не нужно там ходить на какую-то другую страницу чтобы узнать информацию он там по папку может открыть который вот всё перед ним и загружается обновляется мгновенно Да ну там самый базовый пример Ты когда добав элемент в корзину какой-то то у тебя сверху В корзине там обновляется каунтер или сумма какая-то тебе не нужно открывать отдельную страницу корзины вот из всего всего вот этого собственно растёт какой-то конечный который я хочу чтобы у всех был лучше у всех приложений у всех пользователей и естественно Кстати как и Андрей говорил для того чтобы сделать какую-то качественную вещь нужен качественный инструмент который упростит сделать эту веь поэтому я тоже работаю над каким-то своим менеджер состоянием в целом эту тему продвигаю Вот и Local First - это тоже какое-то ответвление от всей этой темы в целом штука хорошая но я бы сказал что она очень сложна я вот могу рассказать историю как я буквально год назад делал Local First приложение грубо говоря по типу фигмы Угу мы делали конструктор сайтов который Ну в браузере работает да То есть ты в браузере накидывает фиг прям макет делаешь только оно ещё сайт В итоге генерирует и и в любом случае самая главная проблема Тут даже Local First не Local First когда ты делаешь какое-то насыщенное во фронте состояниями или там логикой приложения это шаринг этой логики между эндом и фронтом и Local First от этого страдает очень сильно То есть ты не все констрейнт можешь там все реализуемую сущность какую-то положить то есть там описать только какими-то схемами Да там валидации и всё то есть очень много логики которые надо как-то шарить тут естественно я прям фанат ноды в том плане что ты на тсе можешь какие-то утилитарные Да действительно на самом деле доменные функции вынести уже какой-то отдельный сервис в плане например в мореп пакет отдельный который использует и Энд и frontend вот мы там когда начинали у нас ну самое базовое был отдельный пакет с контрактами который ээ в котором на зде были описаны какие-то контракты то есть ранта валидаторы из них мы делали Всё мы генерировать Граф Q у нас ндер написал либу для генерации Граф ql резол Веров ээ из зод контрактов То есть она очень как бы всё это упрощали намного а я на фронте написал либу для генерации реактивных состояний из зод контрактов тоже то есть нам приходит с бэнда Дже сончик мы его Валиди зоодом распива по реактивным переменным эти реактивные переменные сразу используем самим нам их описывать не надо плюс когда мы их изменяем они автоматически за счёт того что они реактивные синку все данные обратно на энд и это ну очень Всё достаточно круто работало это и для пользователя очень быстро это с технической точки зрения достаточно элегантно и как-то надёжное решение но оно очень сложное на самом деле тут стоит сказать в том плане что там разработать и на бэнде и на фронте такую либу было там очень сложно мало кто может это сделать Ну просто объективно говоря или мало кто это может сделать за вменяемые сроки и потом использовать эту библиотеку поддер
какие-то усилия которые надо учитывать и плюс вот в нашем тоже случае это всё равно во-первых мы там часть каких-то фиче поддержали то есть мы структуры данные пока что не использовали у нас там были большие планы потом переехать на это Но короче стартап не взлетел и нам это было нужно только на одной Рани только вот в этой фиг а былом экранов типа там не знаю там настройки пользователя аналитики графики в которых это вообще не нужно Ну или как бы можно было прикручивать Но зачем И тут тоже надо понимать что да типа Local First там насыщенные состоянием штуковины они на нужны Но тоже как бы это могут быть какие-то части приложения а не всё приложение Вот как ты в начале сказал надо делать эм
больше что-то на тильду похожее да да в этом плане Да фиг Я привожу пример потому что она просто супер самое известное вообще приложение в том плане что ты сразу представляешь что у тебя есть сабар с настройками которые мгновенно синхронизируются с бэнда ты как бы как пользователь не думаешь о том что ты поменял сейчас какую-то настройку а ей надо сохраниться да то есть вот это вот интерактивное Изменение какой-то формы которая мгновенно синхронизируется Это особое вид состояния который вот Local First и является вот поэтому я её привожу в пример А так у нас был не совсем генератор сайтов у нас был генератор видео Воронок в виде древовидной структуры и ты в канвасе раскидывал Как фигме именно все эти Воронки создавал с видоси вот прямо вот шаги между ними вот так вот пере дгон дропи их вот так вот вот а потом оно уже через Кэн собиралось в сервис который позволял это всё там пользователю Ну воронка типа се воронка прова кстати я пока тебя слушал понял ведь наш редактор на кте Да который мы кстати ещё сделали там в тринадцатом году одно из на вообще первых приложений на рете в принципе в продакшене Я почти сам начала там то есть по факту это же тоже самое то есть у тебя редактор вот человек пишет здесь код и тебе просто код ском надо синхронизировать для того чтобы его там исполнять там правда синхронизация двухсторонняя потому что у тебя файловая система может Измени е с бка Ну приходить там тоже каширование всякое есть потому что всё файловое дерево загрузить нельзя то есть у тебя лези лоды всякие то есть там тоже хитрее чем это может показаться на первый взгляд когда человек смотрит такую штуку такой думаю Хм это ведь идеальный пример Но вот в принципе когда я его
реализовывался реализован по таймингу Ну там каждые несколько секунд да А в остальном это запросы Но это знаешь какие запросы это Socket I который сам обеспечивает тебе там там ретрай и всё остальное и в принципе да Если связь пропадает ты оно специально устроено так что оно блокируется Но в нашем случае это нормально Вот я думаю если бы у нас был именно какой-нибудь таск-менеджер вот там бы да Потому что вот мы сейчас переехали вот помнишь был момент когда все таск менеджеры поуличный Да и там надо было куда-то валить Но ушин перестал работать и вот мы переехали на Вик есть такой такие ребята Я сам их нашёл сам их начал кстати рекламировать потому что они единственные кто ближе всех были вот по связи знаеш чего там база знаний и вот собственно таски сами Да как работать но боже мой ребята конечно М с количество багов и количество вот этих проблем связанных с тем как они с состоянием работают я это просто даже мне не нужно знать как это внутри устро я это просто вижу и понимаю да насколько у них там постоянные вот эти вот эта фигня с про тормозами со всем остальным я тебе скажу так вся команда у нас возненавидела этот сервис я правда постоянно им говорю чтобы знаешь как бы не выглядеть что мы там А значит их публично там пытаемся что-то с ним сделать я всячески говорю что всё-таки это поправимо и мы постоянно с ними там на связи Они реально фиксят и буквально только сегодня написали что стало лучше но е продолжаете пользоваться то уже показатель Ну ну едим кактус честно говоря но просто это не такого уровне сервис который знаешь типа по щелчку раз и убежал куда-то в другое место То есть это настолько глубокая интеграция и и так много людей с этим работает что даже если бы мы хотели мы бы сейчас никуда не переехали то что мы не готовы ещё 3 месяца блокировать половину работы компании да то есть это нереально вот ну и плюс есть надежда опять же потому что мы с ними плотно работаем но ты прямо видишь И вот вот после всех этих разговоров я такой Ну ребята ну я даже знаешь как сделал я после того как мы с Ситников записались я им в чат где у них там сидят продукты я скинул Я говорю разработчикам скиньте своим посмотреть потому что это прямо про вас Ну там реально из-за этого люди страдают вот чуть-чуть интернет моргает там Кошмар начинается То есть постоянно пропадающий данные там знаешь вот это всё так что я прям Есть места где да И самое главное что Вот кстати в отличие от наших с тобой кейсов где Действительно это очень маленький объём где нужно это да в остальных местах это классический классика здесь всё-таки приложение крупное То есть у тебя это далеко не один экран это там их Ну прикинь сколько там с таскам с базой знаний Ну каждый экран да то есть ты нём Больше всего времени Ну у нас мы делали именно вот ты говоришь спт вы просто отправляете мы там тоже отправляли сшт Но грубо говоря У нас у каждой кнопочки свой спш короче то есть мы самого crdt в плане Conflict resolution не делали но у нас именно Каждый маленький Контрол он как бы по отдельности сохранялся в основном и это как раз-таки тоже было с расчётом на то что на слин то есть главно очень много проблем вылезает при ске То есть каждый раз когда мы говорим Ну Ну вот мы сейчас начали с того что есть домены где тот же Local First применим или неприменим да то есть ну юсово приложение вот с точки зрения юкса надо его там путать и нажимать кнопочку сохранить или не надо да А есть вопрос скейлинг то есть Иногда ты можешь сделать красивое приложение которому нужно Казалось бы Local First А потом когда пытаешься его
целиком весь спш или ты эти отправляешь изменения и вот там тоже по-моему Да я видел кстати комментарий тоже к этому видео то что вот у Андрея используется по-моему подход с событиями Да и соответственно был комментарий не мой но логичный что если тебе нужно восстановить состояние системы то тебе нужно Ну все события повторить это классическая проблема врн она е оттуда идт Вот и поэтому нужно использовать типа специальные структуры данных crdt а он бывает через события бывает через структуру данных которые сами в себе там хранят версию хранят время изменения там и как их мёрт Вот Но если ты используешь например специальные структуры данных то у тебя там как это это очень сильно влияет на твою системную логику на бэнде Да и на фронте То есть тебе нужно очень Тулин сильно иногда это подра ты не можешь взять просто что-то базовое и начать тоже проблема там ну как бы одним Сим тут не решить короче То есть очень много вокруг инфраструктуры нужно менять К сожалению Вот и у меня например Я вот делаю м дамер я его делаю с 2019 года прототипы какие-то других л сча года сме шту меров короче и Последний был назывался м и забросил весной 2019 забросил летом ко мне приходит человек и говорит типа
опубликуйте удобно лучше чем момен и кае другие атевы не пришёл Сейчас бы ничего не было Вот А сейчас уже там 1.000 старов там 200 контрибьютор
целая такая жизнь отдельная развернулась вот Казалось бы кстати тоже интересное такое вот моё наблюдение ка в 201м ты делал очередной стет менеджер над этим все как бы скажем так смеялись типа очередной стет менеджер но с интересом люди Вот они как бы смотрели типа А это как А это то есть они задавали вопросы а как там работает а как оно иначе а что с этим можно сделать А после ковида и ещ немножко позже ну особенно после ковида на самом деле люди перестали задавать вопросы и стали больше в негатив В отрицание уходить то есть ты им презентует новую технологию они такие вот если до двадцатого люди говорили а как вот это вот будет работать то после двадцатого люди говори говорят А вот это не будет работать понима есть мыс вокруг одного и того же но её посыл разный Вот И поэтому это я всё к тому что все технологии которые мы сейчас обсуждаем они интересные но скорость их развития она вот мне лично очень сложно её предугадать потому что кажется сейчас люди больше всё-таки тянутся к какому-то симплисити Вот правда в плохом иногда смысле не всегда в хорошем Но вот тренд на тотже например он пока не могу понять насколько он как бы Насколько большой этот пузырь то есть он пузырь Не в плане который лопается а в плане Круг который Ну существует в который ты там мог попасть или не попасть и Вот я лично пока не понимаю насколько оно сильно может разрастись то есть Возможно это немножко такая нишевая штука К сожалению просто из-за общей усталости каких-то программистов и Возможно даже уменьшение их плисти ума скажем так вопрос ты задаёшь А вот мы с тобой плавне в стейт менеджера передвинули Да и я бы знаешь наверное начал с какой штуки вот есть разные там у нас фреймворки например есть в Да И вот я на вю не писал да но я знаю что у них есть встроенный стейт менеджер этот стейт менеджер Вот он есть его все используют и всё хорошо сколько там лет там насколько я понимаю даже разговоров никаких нет Что там Давайте что-нибудь ещё прищи Ну плюс-минус да предположим сейчас если есть не так скажешь а мы берём react у него естественно есть внутренний менеджмент стейта какой-то и более того на нём вполне можно построить всю логику Да а но при этом у тебя вокруг Ну и собственно когда-то так и было то есть вот если мы берём там флагс когда-то появился Да но это как концепция то есть Вполне себе мы всё это сделали и строили потом уже соответственно там Понятно надо больше задач решать у тебя стали появляться всякие штуки и понеслась во-первых до редакса уже были какие-то штуки редакс потом какое-то время Он держался потом у тебя mobx все такие а побежали всей толпой в mobx Я кстати был среди тех кто такой не бежал такой 100% это пройдёт прошло то есть был момент когда казалось Ну всё мо бык всех захватил это всё правильно они там ещё дальше погнали и бум в какой-то момент у тебя появляется ещё там десяток каждый лучше предыдущего все решают какие-то проблемы все пишут какие они классные и я тебе честно скажу всё-таки ну Ну то есть Я фронт эндом занимаюсь но я занимаюсь не так чтобы вот прямо хардкорно да и сижу Там и для меня всё это со стороны выглядит конечно как-то немножко Короче я не уверен что люди решают реальные проблемы либо я чего-то не понимаю как раз хочу у тебя про это спросить поскольку ты в этом разбираешься Скажи мне что почему нужно постоянно придумывать новые стейт менеджеры Смотри я могу очень простую аналогию привести так чтобы вот те кто во фронте предположим Они понимают эту проблему Ну я тоже сейчас попытаюсь конечно объяснить а для бэнде у меня очень хорошая аналогия есть представ что наш йт менеджер это ваш РМ который тоже всё время
переизбытка так наша предметная область я так Осмелюсь сказать сложнее В этом именно вопросе То есть у нас стоит он всё-таки ну локальный динамический и с ним надо Ну йт приложение вообще то есть мы у вас он старается быть да и у вас он вс-таки больше про именно доступ про миграции там набор утилит каких-то А у нас примерно тоже самое только плюс ещё Эта штука должна уметь работать с стейт флом каким-то который ведёт себя менее предсказуемы Да у него больше потенциальных проблем может возникнуть тут просто на самом деле самый простой ответ Это то что нет хорошего решения окончательного вот ты говоришь про viw например А в viw есть пини Но она её как бы очень ну любой вьюшки знает её минусы то есть Может её поругать за что-то вообще вою это знаешь мне кажется тут очень большой Я вижу у меня может глаз так замын как я вижу везде вот этот принцип паре Вот его реализацию то что мы говорим часто там том что есть такие такие такие проблемы да и всё время кто-то их пытается зачем-то решить Хотя а кому-то наоборот всё время постоянно нормально но вот проблема в том что мы застряли вообще наверное это какой-то я не знаю жизненный принцип все всё время находятся Вот в общем и целом если в среднем брать на вот этих 8% тем кому достаточно 80% они соответственно за 20% усилий Да они как бы вообще не понимают типа зачем ещё что-то нужно а тем кому нужно что-то немножечко сложнее они всё время говорят что вот им там Плохо они тратят огромное количество усилий и ничего не получается то есть пере придумывают всё время что-то новое и типа им всё равно не хватает потому что как раз-таки 20% мелочей которые другим кажется мелочами стоит реализовать Там намного больше силами Вот то есть я там не знаю потратил я считал как-то я точно точно больше тысячи человека часов потратил на разработку риам и ещё есть куча просто множества фич которые я не сделал Вот [музыка] и во viw вот очень хорошо соблюдён баланс вот этот 80 на2 то есть там не решено много каких-то сложных кейсов но базовые не просто базовые 50% а именно на 80 они покрыли пря круто то есть если посмотреть набор улит вот у меня Ровно к половине там 50 утилит где-то типа там подписаться на не знаю Рей окна такие утилиты набо вот этих как раз типа хуков или подписаться на там не знаю какой-нибудь там сот и так далее лови
приме Сосем который мне очень нравится и может быть ты что-то тоже
дополнив ю 99% всех библиотек для спшн в npm Ну типа грубо говоря какой-нибудь лёгкий пер чтобы сохранить данные не имеют вообще какой-либо настройки или Гайдов по версионирование то есть буквально меня как-то КТУ данных кото хе у тебя у на фронте уже другая структура данных у кого-то сохранена он перезагружает приложение с новой версии и у него приложение падает Никто об этом вообще не говорит я правильно понимаю когда мы в Local storage складываем Ну предположим какой-то стейт у меня такой есть кстати вот в проекте cod basics который я сейчас переписываю на инерцию и буквально вот мы тут на днях его релиз А у тебя там есть прикол с использования Local Режа для того чтобы код хранить человека пока вот он работает Да что если он F5 сделает у него код сохранится но там всё очень просто у тебя есть ключ соответственно этот ключ определяет Ну то есть по сути это как кэш получается да А ты хочешь Именно прям версию версию или ты хочешь именно действительно что если структура изменилась то мы её просто сбрасываем этот кэш да либо сбрасываем либо миграции то есть ну вот в моём ре атоме есть Прямо возможность миграции совершить но смысл в том что ты можешь хранить в Local stor какой-то объект просто у которого есть поле там не знаю name А в следующей версии его переименовали в поле ID или у тебя там поле username оно поделилась на Full name и First name там ну то есть что угодно вообще и соответственно ты загружаешь данные из Local storage они у тебя загрузят либо неправильно либо вообще упадут потому что ты не к тому полю попытаешься обратиться То есть это решается тем что тебе нужно в ран тайме всё время эти данные валидировать Но даже если ты их пытаешься ты сваливаешь при их ошибке тебе ну во-первых надо написать логику её почти никто не пишет Вот так вот контракты как бы ранта я имею в виду никто не пишет очень это у нас не распространено хотя есть какое-то тоже движение А во-вторых тебе нужно обработать правильно То есть у тебя возможно контракт упал да то есть какие-то данные не те загрузились но не потому что кто-то там злобный что-то не то тебе засунул потому что тебе просто миграцию надо произвести Да и часто могут например при упавшем контракте делать не просто там клинап этого локал соджа То есть фактически Вот как раз тоже мне кажется такая часть бизнес логика то есть те нужно почистить Local storage и типа заново всё инициировать например да это логика которую должен сам фронтендер сам разработчику подумать вместо этого он там просто показывает окно с ошибкой типа ой что-то пошло не так перезагрузите компьютер и может быть в лучшем случае он всё-таки почистит этот Local storage просто на всякий случай но перезагрузить приложение пользователю увидеть вот этот негативный какой-то там не знаю белый экран или окно с ошибкой всё равно придётся это как бы то как написано Ну подавляющее большинство всех веб-сайт в приложени а Local Stage как бы используется Ну активно тут не думаю что это какая-то супер редкая проблема Я Единственно Только добавлю про вообще про состояние именно такого плана когда у тебя есть а какие-то Поля Да структур Это же не вчера появилось И у тебя если просмотреть как на бэнде пытались решать причём это касается как и деса например да когда у тебя есть й на там сервере и так далее все попытки кстати Air тот же самый Вот у нас скоро выйдет вот в эту субботу выйдет по эликси подкаст и там собственно мы это обсуждали Ты знаешь что A один из немногих языков которые позволяет внутри всё это делать могут сервера прям долгими годами работать там у тебя Вот как раз есть Аде То есть ты можешь грузить новую версию которая вот берёт кусок памяти который у тебя в памяти она его не выгружает она его прям там миграции делает это встроеные механизмы То есть это Вау космические технологии но дело в том что вообще сервисы миграция данных в них это просто сама по себе Задачка со звёздочкой Независимо ни от чего то есть не существует простого решения это сделать То есть в принципе если ты посмотришь на Ланку здесь прекрасный пример потому что это вот наверное самый эпичный пример где это используется действительно в супер важных приложениях где ложать нельзя Это нефрон где можно показать там эту штуку и даже в этом случае с супер крутыми инженерами от этого всего отказались в конце концов Почему Потому что ну вообще в целом Ты знаешь да про Down depl про работу с базой про работу со структурами про работу с очередь все пришли к очень простой концепции мы не имеем права ломать обратную совместимость всё точка Больше никаких Хочешь новое Ну сделай новое рядышком и Сделай синхронизацию поэтому я уверен что вот когда ты про это рассказываешь это как бы крутые инженерные штуки но мне кажется это типа знаешь это переходит уровень сложности мозга нашего то есть не в плане того что люди разлились и там Непонятно с кем мы работаем А что действительно Ну вот в среднем Это слишком сложно и поэтому действительно проще вот просто придерживаться неких правил типа Мой руки перед едой Да не переименовывать поля даже если они у тебя называются неправильно это знаешь как в букинге там ребята ржали у них там таблицы названы Он говорит это просто капец у тебя там таблица User 1 User 2 User 3 и так далее Потому что вот исторически так сложилось Да да да Это знако знакомые на самом деле все штуковины Слушай огромный респект нашему вебу и его можно просто ребутнуть как бы приложение перезагрузить очень с точки зрения пользователя на самом деле Да проблемы очень часто решаются очень просто то есть грубо говоря половина всех пользователей интернета мира знают что вкладку Иногда надо реута с кэшем типа ребут кэша сделать именно Да И вот у тебя Local Stage этот самый сбросится и всё нормально заработает тебе нужно просто перегин там какой-нибудь сделать смотри тут та же самая история что Олаф то есть действительно есть сложность о которой как бы в базе она может быть и не нужна просто было бы круто Чтобы всё Это решалось автоматом то есть и как раз-таки там вот я пытаюсь сделать инструмент который будет Это автоматом решать у нас типа есть просто persist адаптер абстрактный который занимается версионирование и миграция А менеджер к которому подключаются разные адаптеры то есть а адаптер уже только сохраняет и Он сохраняет получается Local Stage Session Stage broadcast Channel если у тебя несколько вкладок открыты и надо там состояние той же корзины Да синхронизировать db что-то ещ у нас было я уже забыл вот То есть фактически тут Ну тоже вопрос правильной архитектуры Если у тебя есть штуковина которая сама разруливает проблемы Этого характера то нужно просто подключать вот эти
персистуючий вопрос то есть тут тут тут знаешь очень долго можно уходить типа вне и так далее вот тот же они же почему его сделали потому что у них это стало проблемой управления состояния да то есть у них там не знаю или что было но у них просто сложный админка с кучей зависимых полей было и получается ты у тебя у них было прописано очень много связей типа это поле от этого это от этого И эти связи было очень сложно проследить потому что они просто там лапшой кодом были написаны и типа что от чего зависит не проследить они сделали реакт в котором типа данные текут только сверху вниз и те теперь инспектировать и то как данные и как они текут и откуда они идут намного проще стало и они как бы вот решили конкретно свою проблему но они к этой проблеме пришли потому что они смогли сделать достаточно сложную штуку на веб технологиях да типа пока не было возможности такой сделать то проблемы не было хотя я в 2012 году поддерживал приложение на сильверлайф
и там как бы мне кажется дошли до этой проблемы в такой глобальном смысле потому что был не так распространён вот АБ он очень сильно распространён и вопрос надо ли нам решать какие-то проблемы там того же состояния и тащить эти дополнительные библиотеки это собственно с каким другим продуктом мы конкурирует ли какая-то там возможность автоматическа что-нибудь там синхронизации или нет преимуществом да то есть значительным что вот беря те же таск менеджеры есть таск менеджеры которые выезжают тупо за счёт юкса то есть тот же notion в нём изначально не было так много фич но он был типа няшный понимаешь то есть в него изначально он хайпанул не потому что он был супер мощным Тулон который типа просто UI Даба Ну Database типа такой для пользователя рядового ренли а он хайпанул потому что просто Ух ты белое всё такое типа красиво и вроде работает Быстро вот поначалу так было бы уточнил знаешь вот для меня что сработало опять же может быть похожие штуки были но в таком виде не было они же поменяли вообще концепцию того как у тебя То есть раньше как было обычно у тебя есть режим редактирования и режим просмотра и notion умудрился изменить это так что у тебя режим редактирования и просмотра ушли У тебя остался один режим и он стал выглядеть как режим просмотра то есть вот с этими блоками и так далее То есть у тебя конечно усложнили определённые вещи связанные как которые ты мог делать с обычным текстом и реально это иногда раздражает Но это настолько было движение вперёд Что например после этого физически с любыми системами в которых надо нажать типа редактирование и войти в режим редактирования я больше пользоваться не могу всё то есть для меня это как бы после шена это всё ну да ну взять тот же ни R может слышал про него это такой таск-менеджер тоже вот он как бы сейчас тоже набирает популярность именно за счёт своей а UI Юса как бы качественного то есть там куча других хороших фич но там грубо говоря не знаю там у меня нет статистики я не могу сказать я на глаз говорю что половина аудитории вот просто то о чём говорят и почему какой люди фидбек дают Это потому что он просто удобный типа и приятный там хорошо выглядит и нормально работает то есть это одно из конкурентных преимуществ А насколько оно будет важно И насколько для его реализации нужен там стейт менеджер очередной который отличается на маленькую штучку но которая там конкретно в этом случае играет какую-то роль Это уже ну отдельный вопрос и пока мы сейчас находимся в таком что нету пря очевидных каких-то стандартов которые необходимо соблюдать и которые можно было бы сделать То есть все пробуют по-своему поэтому менеджеров так много у меня когда я когда-то список вёл и где-то наверное на п закончил вести этот список То есть просто люди их клепают эти менеджеры вообще безостановочно они отличаются какой-то одной фичей ия нуж только им и говорят что стати отдельная огромная тема я сечас быстро скажу это маркетинг вообще вот я осом много занимаюсь и популярность инструмента не от фич зависит это точно она зависит именно от маркетинга но справедливости ради который включает в себя документацию Вот то есть говорю маркетинг Я имею в виду документацию Ну документация важна просто это не совсем маркетинг но да но в целом как человек из бизне коне для
тресно которые привыкли мыслить понятиями что хороший продукт сам себя продаёт они это делают и ты всегда знаешь чем это закончится и такой смотришь думаешь Ну да да Linux стал крутым потому что он очень крутой Ну то есть это вообще всё не так работает да и люди которые в это впирало и они такие потом приходят вот эти вопросы задают А как сделать чтобы там про него говорили А как сделать чтобы использ А почему Например продукт который хуже Да он более популярный А вот так живи с этим да Вот потому что Х например тоже как знаешь как мы много чего придумали и сделали первыми то какая разница потому что потом приходят большие ребята делают тоже самое и говорят Мы первые и всё Ты ничего сделать не можешь слушай даже не Ну я много олите наслышан проходил немного ваши курсы качество очень сильно чувствуется очень сильно разница в качестве с другими но просто у других рекламный бюджет больше И тут самый простой ответ - это сарафанное радио не так сильно работает как хотелось бы то есть сарафанное радио - это больше про удачу чем про Слушай с этим можно работать Но это сложная история короче это то там тоже есть свои подходы есть свои фреймворки есть свои закономерности это всё считается А Да действительно на в определённых нишах на определённых объёмах это работает вот так а где-то работает вот так Но действительно ты на сарафаном радио построить а большую компанию нереально практически нигде То есть это так не работает это как бы некая долгосрочная штука ну это ладно мы немножко отвлеклись Короче я просто к тому что вот мне на самом деле приятно всегда слышать когда вот программисты в это погружаются и они такие сталкиваются именно с этим что типа продукт - это конечно хорошо но у тебя на самом деле там очень много важных вещей вокруг которые нужно делать и которые не менее важны чтобы ты добился успеха это офигенный опыт Да И вот например документация в опенсорс действительно без неё ты не получишь своих пользователей это часть стратегии продвижения интересно то что я прям быстро легко получишь Если ты Надави на другие способы продвижения маркетинга Вот то есть это важная штука но она важная когда ты как раз если что-то про ближе к коду говорить даже А есть намного более тупые и простые способы маркетинга просто которые на эмоциях даже вывозят огромное количество пользователей Хорошо теперь вот давай про стейт менеджеры вот такую вещь проговори значит если мы берём конкретно вот появился в какой-то момент Kit вот я про себя скажу да Когда появился ре он например для меня решил все проблемы То есть он достаточно популярный он плюс-минус там стандарт с ним никаких особых проблем в моём случае нет И вот я с ним как бы продолжаю работать и проекты новые или текущие Да вот там где надо Я его использую на самом деле в большинстве мест Я уже помоему рассказывал немножко ещё расскажу вот мы внедряем инерцию много где и там где В принципе стейт менеджер не нужен мы счастливые слава Богу Слушай инерция такое общее слово ты скажи что это типа аналог этого сес пует очень сильно забыл Ну иц это не фреймворк просто Многие думают что это типа ещё один какой-то фреймворк это всего лишь клей То есть это просто штука которая делает Так что у вас то есть например раньше Если ты на рельсе на Джанг на Равель писал И сейчас если ты из коробки будешь писать У тебя шаблон генерируется на сервере это просто ну типа стандартный серверная шаблонизатор
серверного шаблона react и получается что ты как бы из контроллера бэнда просто говоришь вот эти передать данные туда и они без всякой опиш вдруг волшебным образом оказываются в проса в твоём компоненте и получается что по большому счёту это Почти то же самое что вот и серверная шаблонизатор верный у тебя просто классическая серверная кэндо история вообще абсолютно 100% Просто у тебя шаблон рендерится на реакции получается что у тебя нет ошки у тебя нет стейт менеджера Слава тебе Господи У тебя есть просто тупо пропсы которые вот пришли конкретно вот конкретно в этот вот компонент который живёт вот просто полностью отдельно всё и поэтому в этом смысле оно конечно не настолько быстро как ты классические серверные шаблоны делаешь там всё-таки побыстрее честно говоря но оно достаточно быстро с точки зрения того что ты их Клепа ешь просто да ты не думаешь об пишки и фигари поэтому там где можно избежать стейта я всё-таки стараюсь его избегать потому что какие бы крутые стейт менеджеры не делали само наличие стейта - это уже проблема Да и поэтому если можно его сбежать лучше его избежать так вот но там где есть например к Kit для меня решил все проблемы при этом Вот как раз вот давай прямо по конкретики пройдёмся вот берём кл Kit в принципе Или даже вот этот зу СН или как он там называется Да мне говорили что надо типа это по-немецки этот через о господи Все эти вид у тебя французский этот немецкий Все короче я не знаю как его называть Я никогда в жизни его не произносил зу давай его называть зу короче вот этот вот зу сун говорю вообще прямо по-русски такн О'кей он ну честно говоря Вот ты смотришь на toolkit redx toolkit но они очень похожи Да может быть чуть более вербо сный Но концептуально у тебя вот стейт у тебя вот какие-то там Аля редьюс и в принципе плюс-минус всё это некое ядро вокруг которого всё строится и ты такой И вот как раз мне здесь Хочется услышать О'кей А что ещё-то надо а то есть я понимаю что О'кей там размер бандла Но это блин это техническая деталь она не касается использования Да вот можешь рассказать именно про с сть что было пря понятно Смотри во-первых количество клеевого Кода глюко да вот этот вот очень сильно зависит от того сколько ты кода пишешь в общем то есть если у тебя как раз-таки только какие-то шаблоны Иногда надо какой-то локальный йт написать тебе вообще без разницы на ЧМ дела контек вообще не нужен да И так далее если соответственно у тебя на фронте логики уже побольше то есть ь какие-то ве сложные какие-то суор в которых зави которые Валиди ется постоянно через Кэн и делается всё оптимистично И вот мы начинаем накручивать все эти анимации ещё обязательно нужно чтобы оно всё красиво было ещё чтобы запоминалось и чтобы при отключении там я не знаю электростанции пользователя обязательно чтобы у него лэптоп короче светился и сам работал просто от включённого нашего приложения он чтобы это приложение электричество ещё вырабатывал Короче говоря чем больше у тебя логики тем сильнее Ты замечаешь пй который у тебя добавляется от того или иного Решение вот э redx к сожалению до сих пор даже стул китом А показывает огромное количество B plate и оно тебе больно или не больно просто в зависимости от того сколько ты на нём кода пишешь вот те кто на нём много пишет кода им как бы больнее те кто мало пишет на самом редакс именно кода тем понятно не так больно это Не аргумент Ну извини я вот всё-таки уточню мы говорим именно про редак в котором у тебя всё мутабельность да про тулкит именно Да просто чтобы не путать потому что редак всё-таки это сильно А слово то же самое но сильно отличается да Смотри у меня есть сравнение Tool Kit Ну не знаю вот у меня есть Прямо сравнение с ремом Tool Kit типа там Я не помню там типа 48 строчек Кода да РМ Да слайс создание слайса там всё биндинг там типа реам там пять строчек кода Ну понимаешь Вот когда ты вот такую разницу видишь типа вот у тебя прям я специально постам это всё красивым оформил там тея пря ти вот Крас
перез нарим опять же Это для кого-то сильный аргумент для кого-то Нет я сечас перечислю Это первое Второе Ута у него решены базовые проблемы редакса самого То есть у него не решены проблемы в общем у него решены только проблемы редакса это во-первых а во-вторых они решены тоже Костыль образом Это значит что при слинге у тебя
проб приложение в котором очень много там событий Всего приходит куча состояний и так далее То есть у меня Я там
консалтинговое выстреливает и это вешает там типа приложение на там 5 секунд типа что нам делать Вот такой редакс прости А это объективно 5.000 экшенов это нормально Я просто пытаюсь представить что это за приложение это Это не абстрактно это то есть ну фактически были и больше там по-моему 20.000 экшенов тоже было точно не разработчиков просто вот мне очень хочется понять это давай так есть как у нас случайная сложность Да есть необходима я сейчас объясню смотри тоже зависит от твоей типа выбранной архитектуры в плане Ну обустройства кода то есть иногда тебе очень тяжело что-то держать в локальном состоянии а что-то в глобальном в редакс и ты начинаешь переносить всё в редакс Вот я например большой сторонник этого и например есть вот Иван Акулов такой в сво время он был сам гвм фо чуть ли не в мире как бы вот Иван Акулов у него там и его сайт он там
консалтингового говорю Слушай а что вообще почему Ну надо всё в редакс тащить всё вообще все состояния держать в редакс вот для кого-то это безумно звучит но он говорит типа да я типа такой же на консалтинг подход пропаганди то есть надо выносить точно подписываться в реакте уже вот то есть это не какая-то маргинальная там идея Она реально очень может быть популярна в целом с точки зрения архитектуры там могу это рассказывать Почему пока что просто типа оставим как это аксиому оно типа хорошо с точки зрения архитектуры и во-вторых очень от приложения зависит то есть Давай так я скажу что огромное количество экшенов в том числе Например я знаю у одного крупного банка выстреливает а уних крыва страни к какой-то инфой там или поле авторизации или там я не знаю просто ну ну ладно баланс погрузился и список карт Да а там под капотом просто огромное количество работы проходит просто неимоверное то есть там всякие валидации тамс намешано Да там микросервисы микросервисами погоняю потому что у тебя особенно вот при скейлинг когда скейлинг он под собой подразумевает если мы говорим о приложениях уровня страны есть вся Яндекс 10 и так далее например им жизненно необходимо развивать свой продукт так как для них каждое изменение очень дорого они это делают через эксперименты атест да И эти эксперименты они должны легко включаться и выключаться и чтобы у тебя было инфраструктура для лёгкого включения каждой маленькой пимпочки и всё это ещё вдобавок спа То есть у тебя нуб приложение в котом Сония этот об накручиваешь накручиваешь и вот у тебя 5000 кнов короче в итоге выстреливает Так что это нормально этого можно конечно избежать если задаться с такой целью но как раз-таки проблема редакса вот Мы возвращаемся в том что ты когда начинаешь с ним работать ты как бы не задумываешься об этой проблемы То есть тебе говорят смотри у тебя короче л Kit он оптимизирован там короче вообще можно мутировать не надо и мутабельные структуры а он типа сам трее эту иммутабельность Да ну создаёт её под капотом типа всё супер работает Вот бери пользуйся и ты начинаешь этим активно пользуешься и ты как раз таки приходишь к 5000 экшена А всё это меджи ещё более
детализированное тоже больших усилий инфраструктурных по коду Так что да главная проблема редакции на системном уровне ничего не поменялось он плохо слится он там тормозит он его тяжело очень дебажить с этими слайсами есть из од из Больших сах мотиваций для меня делать Рем это то что селекторы не показываются вузах То есть у тебя есть лоер редак который показывает все изменения состояния ты изменения состояния не можешь если у тебя сложна приложение с куче селекторов которые трансформируют данные походы для разных компонентов у тебя в этих селектора что-то лежит а что-то не знаешь вот и как бы
в том плане что у тебя что-то работает а что-то нет Те ВС время нужно в голове держать что вот это работает Это нет здесь надо ло втыкать здесь не надо а может надо теперь везде логи втыкать не нужны эти тузы вообще понимаешь то есть ты постоянно в таком грубо говоря стрессе Ну в том плане что тебе нужно принимать решение то есть каждый раз когда разработчику нужно принимать решение Он страдает от этого как Любой человек вот и Да это как бы Давай ещ какую-нибудь назову последнюю проблему редакса хотя их там мелких можно е пона придумывать так нормально это то что как я и сказал в начале решилась проблема самого редакса но не решились проблемы в общем в том плане что экосистема не стала богаче не появились новые боль библиотеки там которые с редак дружат лучшего качества то есть пря форм менеджер там раньше был он наоборот сдулся и помер типа нету фор менеджера который был бы совместим с Рексом и тебе всё время нужно гкод писать с ним получается то есть нужно одно в другое перегонять и из этого туда то есть вот эта перегонка данных туда-сюда она тоже как бы ну что-то стоит а есть библиотеки которые там форм менеджер сразу у них ты можешь и стоит и локальные писать и формы на них и у тебя всё автоматически синхронизируется тебе не надо никакой этот гкод писать и там тот же persist адаптер что-то Там вся экосистема которая была с первым Рексом она подвержена там каким-то проблемам она не особо развивается Несмотря на то что это самая популярная такая типа Т менеджер и как бы вот так да Я единственное знаешь что хотел сказать Вот именно Куда повести то есть большая часть того что ты описал Но это скорее просто технические проблемы которых Ну понятно что это одно из первых решений что оних там как могли так сказать решали у них это не получилось но в целом это некие внутренние технические проблемы То есть я поэтому специально в начале сказал помню что если ты скажем Концепция это сама особо не поменялось У тебя есть некий стейт и у тебя есть некие там Аля редьюс которые собственно этот стейт как-то мутируют и поэтому скорее когда я про это говорил я имел в виду не конкретно вот эти проблемы которые типа окей можно переписать и сделать так чтобы этого не было А вот если предположить опять этого назвать не могу вот если мы берём его Да он же как бы в базе Вот ты смотришь на доку Да и он выглядит вот типа Аля слай тот же самый только вот максимально простом варианте и там как бы эти проблемы решены и вот у меня именно вот начиная с этой точки что мы считаем что эффективно внутри сделали Ну и так далее вот типа А какие фичи поверх нужны что вот этого недостаточно то есть не проблемы которые они сделали потому что это историческое Наследие просто их могло бы не быть если бы они сделали нормально а вот именно что ты говоришь что нет современному стейт менеджеру Нужно ещё много фич которых там нет Вот в этой базовой конфигурации кроме этих слайсов типа ты имеешь в виду ну потому что ког я ря смотрел у тебя там много примитивов разных которых Например я такой типа Нафига мне это надо да то есть поне что я могу почитать и разобраться и они мне напоминают что-то там из ме но вот хочется сейчас это разобрать то есть очень много мелочей тут знаешь всё зависит от того опять же глюк вот всё-таки на самом деле от этого всё отталкивается то есть важно для тебя иметь там не знаю кодовую базу 5.000 строк или 10.000 строк То есть это ну разница значительная это первая проблема то есть Самп в плане технический который ты всё время пишешь вторая проблема - Это всё-таки я бы вот ты говоришь типа это внутренние проблемы какие-то там с перформ Но если у тебя приложение там много секунд дополнительных грузится Ана там каких-нибудь слабых устройствах 15 секунд дополнительных это прям очень сильная бизнесов проблема прям очень сильная за которую прям типа ну будут мене Я имел виду немножко Дада ты прав но я же немножко с другой стороны то есть типа просто производительность - это техническая штука которая решаемая То есть это не новая Концепция это не новы по просто решается смотри она прям ну не просто решается то есть оно скажем решено вот в новых вот в этом зю решено это или нет считать что решено Будем считать что решено если бы речь просто шла только об этом Ну всё было бы просто А мы же говорим о том что людям нужны именно фичи вот я про что то есть типа производительность это вот смотри у меня есть такой пример вот мы писали там вот этот стартап с автоматической синхронизацией короче полу фигмы и так далее и смотри в ри атоме Ты можешь создать Состояние просто написать атом Давай какой-нибудь флаг открытие или закрытие Ты просто пишешь типа Open ра ВС У тебя есть это состояние ты его можешь где-нибудь Ну подписаться на него и посмотреть что там реактивно подписаться чтобы модалка открыта или закрыта и где-нибудь типа вызвать атом вызов как функция или атом вызов как функция супер тупо Ну некуда тупее прость Казалось бы
который создаёт тот же самый атом но АТ внутрь него это объект внутрь него а два метода Set Set fse дебилизм Казалось бы да но по кодовой базе Set fse использовался там за грубо говоря полгода разработки там двумя человеками грубо говоря больше 100 раз примерно так ильва в кодовой базе потому что вот оно звучит знаешь тупо реально но ты когда смотришь почему так происходит во-первых у нас на самом деле эти атомы Гене автоматически зот контрактов и Тебе проще вотт написать во-вторых чтобы в реакте вот смотри вот такая проблема которая ментально на тебя всё время давит в реакте именно попроще с этим в реакте чтобы тебе сделать в котором вызывается ам или ам fse тебе нужно сделать отдельный коллбэк и он у тебя тебе надо либо его ещё
заморожен его передать в маппинга там Inline тебе нужно короче выносить его в переменную там описывать зависимость Понеслась короче вот это вот всё вот этот глю код он задалбываю А когда ты можешь сразу передать сетру и тебе не нужно создавать отдельную переменную называть её
мемоизация они ну для кого-то опять же важны для кого-то нет то есть кому-то этот сет - это избыточная сложность очевидно Ну то есть Зачем платить примитивы это же глупость просто ну кто так делает типа keep it Simple а для кого-то наоборот Типа если у меня не будет этого примитива мне понадобится писать там вот представляешь у нас более шеста использований этого Кода да Set True А теперь подумаем сколько там раз нам пришлось бы Зами маризи и вынести в переменную эту функцию самому То есть у тебя там Ну например 1.000 строк кода уже наберётся просто из ниоткуда просто Слушай вот вот это вот прямо классно тут сразу понятно зачем и почему но сразу есть несколько моментов первый ну с буленок пример он у тебя решается так но у тебя во всех остальных кейсах так уже не работает А смотри это самый простой пример во всех остальных Вот мы с тобой говорили про перст Ну там как бы да вспоминали вот опять же я не нашёл ни одну библиотеку которая бы позволяла абстрактно Вот смотри редакс ты не можешь на слайс повесить отдельно персис насколько я знаю То есть ты не можешь повесить Мидл Вару только на слайс это неудобно на самом деле тебе не нужно
персистирующий только токен То есть у тебя слайс лежит в одном месте а маппинг к этому слайс внутри в Варе в другом месте короче это вот композиция фич она какая-то странная соответственно в том же реме ты у нас есть механизм там папо в том плане что простое добавление декораторов над состояниями То есть ты можешь вот как в редак есть сй у нас жим предположим есть атом Или в зунде есть эти тоже какие-то штуки сторы там они поему называются зан тоже нельзя а или там ну там тоже по-моему написано Так что ты вокруг стора просто ну возьми сделай обёртку вот почему-то нельзя знаю почему-то делает но приня почему неудобно это но делать ты можешь это закрутить его и добавить Вот только для этого ра вр также Ты можешь добавить только для этого атома но ещ ты можешь запер ты во-первых можешь выбрать куда тебе Перси во-вторых выбрать приоритет Перси ко мне реально люди приходили говорили слушай мне нужно типа что-то брать какой-то кэш из но сначала там попробовать его взять не знаю там из какого-то вообще локального состояния другой фичи то есть Возможно у на есть какой-то дра который пользователь уже написал сохранил нагой который он перешёл через SP роутинг надо этот драфт проверить если он есть мы берём его если его нет мы берём из Local Stage если в Local стод Нет мы вообще асинхронную инициализацию запускаем которая там что-то делает Вот соответственно Ты этот код либо пишешь вручную либо у тебя есть хелперы которые позволяют это всё менедж вот ну и например Давайте такой последний примеров много но я тебя два примера приведу даже последних Вот какие у нас есть пакеты ря тамм таймер который просто Обратный отсчёт обратного времени делает вот просто зайди посмотри код я его не понимаю Я не понимаю этот ко я его написал я его не понимаю я типа каждый раз Ну вот код который просто считает время у меня есть такой код в кодб сиксе у меня такой код есть Слушай ты мне вот сейчас сказал у нас просто есть знаешь там типа 20 минут отсчёт тебе даётся время на решение упражнения но 20 Через 20 минут тебе даётся возможность Показать решение то есть у тебя появляется кнопка типа жмяка и у меня прям вот этот код который я буквально на днях смотрел То есть ты имеешь ты его не понимаешь
я его написал для я его не понимаю Он сложный потому что он решает реальные настоящие Корнер кейса То есть у тебя вкладка может заснуть и у тебя время у тебя например может отработать не с тем интервалом с которым ты ожидаешь А если ты выберешь сет интервал и у тебя вкладка заснёт после просыпания она может отработать много в один момент вот н пользователи на неё возвращаются и у тебя за 1 миллисекунду отрабатывает 10 колков с интервала А у тебя в коде как бы какой-то расчёт на то что Да нет они будут отрабатывать То есть те бачин какие-то надо добавлять и так Дале Ну смотри тут смотри я быстро скажу Вот есть такой набор Корнер кейсов Как работает JavaScript Как работает wep и так далее и чтобы всё это было более предсказуемо потребовалось написать функцию там в 10 или 15 строк которая работает с внутренним состоянием то то чекает что у тебя есть вот эти таймеры правильно идут и там основная Сложность заключается в том что ты паузу можешь ставить и там проверяется что время которое ты запланировал оно с паузой если там её поставил отжал в разные моменты времени и так далее а возможно у нас таймер висит а возможно не висит то есть там йт машина такая на самом деле нормальная на всякий случай йт машина и йт менеджер абсолютно разные вещи вот Можем потом об этом тоже поговорить большая интересная тема но смысл в том что таймер обратного отчёта - это очень простая фича с точки зрения первого восприятия но с точки зрения реального использования всех корх кейсов это фича на которую Мне потребовалось типа там несколько дней фултайм работы тестирования нахождения багов и так далее И вот как бы вопрос надо было мне это публиковать в npm или не надо было мне давай те теперь я скажу мне на реализацию этои понадобилось 5 минут потому что я для кадан ставишь его и у тебя всё работает ПН важный я тебе сразу скажу 8 лет в продакшене никто не жаловался АНО Да ну Ну понятное дело что оно может быть важное всегда вопрос Просто я имею в виду что я бы конечно никогда в жизни не дошёл до точки что я сижу и сам пилю эту фичу то есть для меня это конечно как для человека котором важно просто чтобы работало Это безумие То есть я понимаю почему ты это делаешь и почему у тебя надо было И что почему это сложная штука Но это конечно очень низкоуровневые вещи так А тогда вопрос почему кто-то запилил этот кадан для реакта в npm это к нему Вопрос такой же то есть вот тот вопрос который ты мне задаёшь Это для него тоже вопрос и соответственно то почему он запилил этот пакет по этой же причине в том числе и я запилил свой пакет то есть как бы просто бинди него бинди к КТУ А у меня биндинг К стейт менеджеру Да да да У тебя получается К стейт менеджеру для того чтобы реализовать это на уровне стейта а дальше Ты уже можешь это реализовывать как угодно применять у тебя вобще не обязательны реак уж Если уж по чесноку это кстати важная штука у нас прям есть пользователи которые не ректо пользуются и в том числе одна из прям важных задач менеджера прям очень важных вот говоря про скейлинг это позволить нормально писать микрофронтенд есть проблемы очень часто вижу как большие компании там ну банки в основном У меня часто работа с банками происходит мигрируют например ну просторе на viw да какой-то сервис и и соответственно и надо как-то шарить какой-то у неё там виджет на viw написан всё остальное на реакте Или там ангуляр или ещё что-нибудь и надо шарить банально какие-то данные там ну это супер очевидная штука Но им это очень сложно делать они всё время придумывают свои велосипеды и й менеджер - это как раз таки в идеале ответ на такой вопрос тоже Слушай ну вот так вот конечно понятнее становится То есть получается что Понятно Вот каунтдаун который я использую Да но это такое типа просто вот из серии для не знаю вот Аля Как в вордпрессе Я сижу такой плагины наты лишь бы работало Да Внутри там капец полный Но это неважно потому что я решаю свою бизнес задачу то есть в этом плане я такой программист этот вот этот вот да у которого пальцы не гнутся Ну потому что у меня реально у меня бизнесс задача Я не хочу копаться в этом в данном случае при этом получается что забавная история то что действительно фундаментально правильно это разделять да то есть у тебя есть решение то есть это же по сути работа с состоянием решение на уровне стейт менеджера который уже потом можно использоваться и таким образом мы воспринимаем Я просто сейчас попытаюсь вот как бы гипотетически А в чём собственно задача то есть речь идёт не о том что мы просто храним некое состояние Да положили и получили а речь о том что Существует очень много вещей динамических Вот например как счётчики и так далее которые просто положить не получится и тебе вокруг надо делать обвязку для того чтобы это всё работало и Поэтому собственно и появляются все эти примитивы и так далее Правильно я понимаю да проблематику а уже поверх этого пожалуйста накручивай я сейчас вспомню самый главный сен который я слышал от других людей что важно для них и где-то наверное Ну не знаю там в 50% случаях Почему люди например не берут там голый рек или а опять тот же самый а пытаются найти какое-то другое более сложное решение это тестирование когда тебе У тебя есть сервис абстракт абстрактный сервис с какой-то логикой кото Ну ты уже там написал То есть у тебя не просто кадан А у тебя там не знаю аудиоплеер в котором Ну набор состояний они переходят как-то они от чего-то зависят они там могут меняться из разных источников типа у тебя там не знаю прилетело событие окончание подписки тебе в этот же момент надо на паузу поставить и так далее да У тебя есть вот этот вот сервис тебе его Надо как-то протестировать если он у тебя написан на реакте ты Ну это проблема это прямо большая проблема потому что тебе нужно вот эту всю вёрстку загружать как туда забраться и протестировать И что-то сделать это всё очень сложно получается Особенно когда у тебя вот эта логика она всё-таки к реакту на самом деле не привязана То есть она у тебя написана Как там хук отдельный если в случае с реактор или даже если в случае с Рексом если у тебя именно логика какая-то то у тебя она не в редьюс написана у тебя есть какая-то Мидл Вара которая обслуживает события и так далее То есть у тебя Ну слайс там хорошо какой-то Но его в отдельности тестировать скорее всего будет сложновато Там прям набор таких неудобных вещей вылезает которые что-то надо костыли так не очень красиво делать не очень надёжно А можно я прямо добавлю вот я вот если берём мой каунтдаун Да поняш что у меня решает тупую задачу когда вот просто счётчик отобразить и всё и в конце Там изменение прямо локальное Ну и получается кстати логика у тебя просто в компоненте То есть у тебя там стейт и всё То есть он сам это инкапсулированный вительно если бы это была логика какая-то некая сквозная что по этому счётчику надо было совершенно в другой дере не вот здесь вот что-то делать это ВС превратилось быва соответственно это надо выносить в стейт Ну и тогда получается что эта штука не решает эту задачу ну и Приплыли то есть при вот этих действительно сложных Когда разные части деревьев надо сикать появляется вот эта вся фигня да тогда бы я конечно так не смог реализовать и конечно это был бы очевидно херовый подход да ну да ну и соответственно рек поощряет То есть у тебя когда очень много внутри таких локальных соответственно я оче много слы немножко пузырь у меня это знаешь как типа в самолётах подают кошерную еду потому что 2% всего лишь 2% пользователей её требуют Вот то есть а как бы ну ради 2% во всём всё меню всего всех как бы грубо говоря там самолётных компаний изменено но проблема в том что эти 2% очень громко кричат как бы о том что ай-ай-ай у вас там не так сделано не то что надо вот возможно У меня тоже такая проблема но я говорю я об этом да часто слышу что тестировать очень сложно и react тестировать прям огромная проблема то есть у них есть какие-то хелперы там есть react Test lib Но это всё прям сложно вот сейчас набирает популярность компонентное тестирование То есть это такие типа юниты на максималках когда ты вроде ещё не интеграционная но уже Прямо модульная То есть ты можешь зама унти компонент не просто ну отрендерить его там может быть как-то поработать со стей а ты браузере запуска только компонент То есть ты вые компонент из приложения и запускаешь только его в целом браузере соответственно в браузере у тебя там Ну побольше механизмов по во-первых работе этого компонента если он там входит в сеть Там те же таймеры и так далее И ты проще можешь достать какую-то информацию которая в ито в этом компоненте долж отобрази но избыточно когда у тебя вьюшка достаточно То есть у тебя там не знаю вьюшка показывает просто Обратный отсчёт а под капотом он на самом деле там зависит от какой-нибудь синхронизации с кэндо ещё может быть каких-то там правил валидации которые да Вот как ты сказал смотрят на что-то другое Например если ты там не знаю три раза ошибся то у тебя время обратного отчёта уменьшается в два раза что-нибудь такое да то есть у тебя синхронизировано Состояние Количество попыток использования с временем использования как бы урока там я не знаю да и они Да между собой пересекаются это всё логика которая написана Да её надо тестировать это сложно короче всё в реакте особенно да И на самом деле не только в реакте в других библиотеках то есть это в принципе у нас сейчас во фронте если мы говорим Оно же типа мы когда говорим Какой у тебя фреймворк Мы вот вот вот смотри типа это анекдот встреча в баре двух фронтенде Да ты на каком фреймворке пишешь типа на реакте А ты на каком там не знаю на Лите он в лицо в ответ потому что реактор - это не фреймворк вот такой разговор должен быть да да Вот я это и хотел сказать то есть типа он же не фреймворк но Разговор начинается с этого То есть ты не ты не говоришь А на какой библиотеке ты пишешь ты говоришь типа На каком фреймворке вот ну и кстати react он много что диктует конечно не всегда не все следуют тому что он диктует но он очень сильно очень сильно Я бы назвал его фреймворков в том плане насколько сильно он влияет на тот код который пишешь да Слушай ну конечно Он фреймворк просто react в этом плане может скажем давай так это фичи он может использоваться как библиотека и вот например и вот например когда мы говорим про использование реакторов инерции это вот вот один из редких примеров Когда я скажу что вот смотрите здесь это реально просто всего лишь либо потому что это просто вот как либо у меня есть там Л для рендеринга темплейт То же самое Я уя передал пропсы и просто их отрисовать но Извините Когда вы внутри у вас там стейт на стей тамм погоняет вот это вот колбеки вы строите деревья спа реакт полностью управляет тем что вы делаете вы как бы можете против него писать да против ветра но вы также можете и в любом Кэн фреймворке пытаться писать против ветра это не делает их библиотекой от этого да поэтому тут вопрос как бы в вариантах использования но при полноценном использовании это стопроцентный фреймворк вы на нём от и до решаете задачу вот целиком Я вырежу из стрима этот кусок и буду в закладках иметь на всякий случай отправлять не соглас меня это задолбало я тоже постоянно приходят эти гормона там типа это библиотека Ну да да да которая стейтон управляет вообще всем на свете понятно что опять же можно его использовать просто как View Но блин это крайне редко делают Вот ещё раз повторюсь инерция - это как View прямо 100% там А вот редкие места где я там стейт прямо использую но всё-таки редко так кто использует потому что это безумие нафига тебе там вокруг него ещё вот это всё то есть Если уж люди на нём пишут то пишут внутри него Да а не просто к чему-то приклад Хотя подобные наверное проекты есть особенно вот ты говоришь микро frend наверное вот да Там могут быть подобные какие-то истории когда там где-то сбоку воткнули там насколько я знаю полумеры всё время то есть там пытаются Но получается так средне Да хорошо вот и получается что вот для решения подобных всяких хитрых кейсов разные эти штуки появляются вот этот зн Мне кажется наконец более-менее правильно произнёс сейчас вот если так подвести итог то в целом это штука которая решает большинство задач достаточно компактная и поэтому самое популярно или она вообще задач не решает не она вообще задач не решает Смотри это зун - это подтверждение как раз это это одна из причин почему я очень сильно думаю что после двадцатого года люди устали очень сильно То есть она настолько тупая она смотри там вот долгое время бы до сих пор м ты ты понимаешь нода stateful штука да ты если объяви переменную типа я не знаю там в модуле LED User ID равно там кря какая-нибудь в базу и эту переменную потом в реквест ответишь да ты же понимаешь что тебе прилетит сейчас другой реквест в котором может так случиться если у тебя там несколько квестов и обработка реквест асинхронная то у тебя этот L User ID улетит другому человеку Да как бы ну другому пользователю то есть нельзя иметь глобальных состояний в ноде у тебя всё должно быть строго изолировано в реквест и как бы при этом мы знаем что сервис рендеринг с ретом он тоже обычно йф То есть это не лямбды которая вот проснулась отрендерить да а это как раз таки нода которая там прогремит тебе одно и тоже но для разных пользователей на разные реквесты так вот зн создаёт глобальные сторы То есть ты то есть ты должен на каждый запрос полностью его ресе и управлять короче им чтобы не осталось только Угадай сказано ли хоть хоть хоть вот что-нибудь об этом в документации вот Угадай Ну ты имеешь в виду что короче как это происходит то есть человек ССР запускает у себя дальше там каким-то Я кстати сэром пользуюсь через плагины поэтому я не очень хорошо понимаю как там взаимодействие идёт они за меня это решают но ты каким-то образом туда данные отправляешь и получается что ЕС у тебя Ду запросе были какие-то данные которые сечас тебе не нужны у тебя херак отрендерить
[музыка]
с наплыва это понимают там не знаю типа 1% программистов там примерно да то есть 99% программистов такие приходят документации в зунде по ССР вообще нет Если она сейчас появилась Извините но до миллиона скачиваний в неделю в её точно не было То есть вообще ничего И люди такие А ну у нас есть просто обычные гайды как типа делать ССР типа сделали по ним и поехали потом Надо протестировать как как тестируют программисты типа один программист Один делает один реквест дожидается его делает второй реквест после да очерёдность то есть никакой параллели нет никаких конкуренций нет поэтому он никаких проблем не получает а потом типа вот был доклад тоже недавно по-моему на холе как раз про то что как люди чинили когда они вдруг в проде обнаружили что что-то данные от одних пользователей другим прилетают Упс типа ну и повторюсь документации ничего об этом нет то есть он настолько тупой Что там даже в документации об этом ничего нет хотя проблема на самом деле Ну типа это самая популярная Задача в реакт мире сделать ССР типа с ретом одна из самых популярных там после форм стоит я не знаю нету гайда по тому что очень сильно можно себе бы в колено выстрелить просто схо ничего не делаю просто ты типа запускаешь всё по обычным гайдам СР у тебя типа коллизии данных происходят вот и тебе придётся Приходится накручивать То есть ты уже там много костыли велосипеди вокруг там свои Вары создаёшь там за ресета следишь и то они могут Очень ты как бы уменьшает убираешь но там грубо говоря 5% ещё остаётся что тебя коллизия получится Но она тоже зависит от того как ты там реквесты эти написал асинхронно насколько и так далее но вот это такой пример что самая популярная Задача сходу В этом Т менеджере важная и очень неприятно и неочевидно и в документации об этом ничего нет И там в Твиттере например очень часто рекламируют то что у зунда типа там исходник не знаю 50 строк Вот и как бы типа смотрите как круто типа берите это решение будет всё очень просто но тут нужно объективно понимать что невозможно какой бы ты не был гений 50 строк решить все ключевые проблемы стейт менеджмента как бы понимаешь то есть это ну так не работает типа да Ты можешь изменить какой-то подход но тебе всё равно придётся очень много на самом деле нюансов по смежным темам учесть з они совершенно не учтены то есть он очень хорошо решает очень простую проблему и Шаг влево шаг вправо тебя ждут очень неприятные сюрприз ты сейчас перевернул конечно меня это восприятие но просто для меня вот управление ям то есть для как программиста с опытом это вообще не решение то есть я например считаю что в принципе значит нельзя брать такой инструмент который требует от тебя такой истории для Спасибо большое да то есть я понимаю если бы я где-то низкоуровневый программированием занимался где там за собой надо чистить у тебя горо коллектора нет И там ребята этим занимаются но в прикладном программировании это конечно вообще ни в какие ворота не лезет конечно и сходу схожу минутка рек Рите проходит То есть ты обязан создать отдельный Для ретом контекст вне контекста он не работает соответственно ты на реквест создаёшь контекст у тебя там всё чётко в редак это решено у тебя р о это в общем-то хорошо в куче других стейт менеджеров там тоже примерно как в зунде проблемы а в Максе например в общем и целом в зависимости от того как ты есть у тебя сингл тоны или нету эта проблема может быть или не быть потому что в мосе люди скажем грубо говоря поумнее они иногда сингто не пишут А у них про ре кото собственно пере инициализацию делаешь но сама библиотека она тебя как бы это тоже Делать не Форт то есть ну да поэтому к нему тоже есть проблемки с ним можно в ту же самую ситуацию попасть и в целом это вот такая проблема которой Ну тоже один из примеров того Откуда берётся сложность и кто как её решат Да Забавно ты сечас во мне коне перевернул отношение пото
недавно вот ну то есть у нас к Tool Kit используется опять же по историческим причинам и у нас там нет тысяч экшенов и мы как бы нормально всё естественно я смотрю на альтернативы естественно смотрю куда всё это движется и буквально недавно вот я редит шерсти на тему стейт менеджеров Да там типа что куда и меня вот это вот пугает ситуация когда у тебя просто ты ты уже вот когда долго в разработке ты это 1.000 раз видел да И поэтому ты не пойдёшь на очередную штуку потратив время на переписывание знаешь что она в очередной раз умрёт Да и например вот с моксоб Да он наверно используется но явно он сейчас не является там фаворитом и люди на него не переходят массово как это было когда-то но было с з устан дом такое и я смотрел думал Ну вроде как бы он там вот сегодня смотрел 50.000 старов Да активность тако Посмотри на количество загрузок в NP он очень популярный ощущение что типа Ага Ну вот кажется кто-то победил Но вот сейчас то что ты мне сказал Я этого не читал не прочитал вредите я не увидел конечно наверное пишут но видимо я не очень внимательно смотрел и получаешь что ты сейчас во мне просто полностью мою картину мира сломал таких штук К сожалению короче думал что всё решили проблему не проблему Ну я на всякий случай рям тоже там не все проблемы решил то есть мы в принципе сейчас находимся в таком положении до сих пор что нету каких-то прям
очень сильно всю Ну смотри если мы признаём то что react у нас такой условно монополист или как минимум как это Amazon знаешь этот Amazon 80% рынка там остальные все остальные То есть за ним Все следят в любом случае то есть всё равно все ссылаются А как в реакте сделано А куда А что и последние несколько лет очень сильно всё сер вот давил его да то есть смотри на всякий случай если там вдруг пропустил я не знаю ты в курсе нет большая часть команды реакта она либо расформирована либо половина где-то ушла верл ве - это компания которая продаёт сервис рендеринг грубо говоря то есть ну кажется здесь есть какой-то конфликт интересов кажется Возможно там на самом деле история не такая ужасная какая-то и типа что там какие-то заговоры действительно команда ре очень долго те сделать S именно и просто им в этом помогает Но надо понимать что какое-то первое время они сначала спа делали фактически да то есть помогали упростить спа во фронте и когда они это делали всем как бы было круто а потом они такие Бах и типа Так нам это достаточно мы теперь сервер короче и проблемы две этото
не вывозят в плане крутого развития спа в том плане что вот тот же Local First он знаешь нет такого что вю появился какой-то супер фреймворк который офигенно решает проблему Local F вот такого нет почему вот а в ректи это не появляется потому что они вообще типа спа Нам сейчас подожди Подожди нам сервера там серверные эти экшены рендеринг нам надо вот эти все проблемы решать мы там вообще Учите ноду уте как бы вам сейчас надо этим заниматься забудьте про какие-то там спаи состояния нужно в ССР у парова короче Вот И именно поэтому мы сейчас находимся в таком состоянии что у нас Э да повторюсь просто развитие наоборот очень замедлилось И если кажется что сейчас есть какое-то решение которое супер популярно и типа стало монополистом Это скорее всего потому что у нас такая стагнация небольшая вот происходит Ну мне так кажется по крайней мере у меня есть кстати негативный опыт я буквально недавно когда редактор хета переписывал Я думаю Дека для энда Next возьму до этого на Фае был понятно что там ошка Ну понимаешь это редактор там в основном это просто файловые операции там Создать файл тра-та-та Она небольшая но при этом я думаю Окей Они вроде предлагают у тебя там много всяких фишек Да там у тебя всё само то есть я как бы опять же исходил из того что оно всё само и мне ничего делать не придётся Ну я вся просто в какие-то проблемы тупые совершенно у тебя там начиная от того что логи не показывает серверные Я просто не понимаю что происходит заканчивая тем что м websocket сервер там Ну понимаешь Вот так вот делается и со стейтон он очень плохо работает И там всё это на каких-то костылях половину у меня поскольку там Монако редактор и всё такое мне всё равно везде use Client пришлось воткнуть просто в каждом почти компоненте я такой и на хера мне всё это надо было То есть я в конечном итоге его выкинул потому что мне только хуже стало от этого и воткнул Кстати fastify сватом если ты с витом ког тея работает по Су как инерция я такой вот то что мне надо то есть полностью управля автоматически и пря прият вот так что интересно как именно они интегри ну вид он в принципе вот он кстати похож Нет ну короче он он больше сторону библиотеки но которая делает очень много вещей вид прям Да в плане сборки так типа реклама если вам нужно сборку сделать то в первую очередь надо смотреть На вид а в документации ре сза в первую очередь надо смотреть на Next не видитесь на это да да ви и тест тоже Мы везде переходим не он реально как инерция работает то есть у тебя прямо фафа фафа най рендеринг А у тебя просто обычные Эти шаблоны реакторс и дальше ты на них можешь уже Если хочешь стейт наворачиваются не наворачиваются надо было но я просто такой прямо словил флешбэк думаю о как будто бы вообще вот эта концепция она стала так широко распространяться и у тебя снова Возврат к серверному роутинг и видишь для приложений таких типовых классический круд и так далее кто его знает может быть это станет решением не усложнением Да на фронтенде а наоборот упрощением типа как будто знаешь мы по спирали вернулись к бку снова Слушай у нас на самом деле наверно много тем для обсуждения но я скажу что я я противник это ССР вообще в любом виде Мне кажется это очень сильно Я так скажу смотри если взять человека с белым листом в голове и научить ему научить его э всем современным технологиям и дать ему нормальный стек инструментов то есть не так чтобы он сам его выбрал типа по отзывам короче там и так далее А вот типа сказать Пиши на этом то он будет достаточно Ну мне кажется эффективен когда у тебя Без сервиса рендеринга он будет более производителя но тут тоже знаешь зависит в том плане что ну сошку никуда не денешь ну вот нет выбора вот мне например пришлось вот я сейчас c Basic Когда опять же переписывал я не хотел туда ssr включать мне нормально Подожди А у тебя ssr в том плане что на каждый запрос рендерится под каждого клиента уникальная страничка или у тебя ssg то есть у тебя есть набор каких-то страничек которые просто
знаешь я не могу тоже сказать что это спа потому что у тебя там опять же инерция Да у тебя фактически роутинг бкдо вый при этом на клиенте он там там хитрый протокол Как он это всё сам делает он тебя всё запросами шлёт естественно не просто браузерные там гиперссылками он шлёт это просто запросами делает сам умные подмены и и рендеринг у тебя как бы каждый шаблон То есть у тебя нет как бы некого общего дерева понимаешь да всего приложения с точки зрения меня как разработчика я те тебе уже говорил это выглядит как вот просто классический кэндо вый шаблонизатор то есть вот у меня есть Controller Action и у меня есть тупо под него конкретная Вью Вот только под него и соответственно там нет никакого стейта В принципе там есть пропсы Это всё что там есть но с точки и как бы выглядит это так как будто как классический типа перезагрузка страницы Я имею в виду ты работаешь в таком мировоззрении потому что для тебя нету связи между ними но при этом ты можешь объявить какой-нибудь глобальный контекст который будет хранить состояние на реальном клиенте правильно ты можешь его воткнуть легко то есть вообще те никто не мешает просто как правило видишь он он появляется не на роутинг между страничка А у тебя просто вот опять же я вхожу в режим например вот в код Basic ты редактор запускаешь Да ну ты же понимаешь там в редакторе начинается уже вся фигня Просто с точки зрения вот этой всей системы ты как бы находишься На одной страничке то есть я не уверен что между страничка Как это работает тут вопрос открытый Просто мне не нужно было да то есть И вот на этой страничке всё у тебя редактор ты пишешь код запускаешь проверки сбросы там обсуждение есть Ну в общем у тебя прямо нормальная спашоп чтобы у тебя работал там ssr потому что в данном случае это а не штука для SEO там индексации А вот ssr мне там был нужен То есть я-то Блин если бы не надо было я бы его не включал опять же у меня собственно и не спа и ssr мне как бы самому не нужен у тебя ssr Конечно удобно в том плане что это в плане роутинг вообще вопрос роутинг отдельная огромная прямо тема то есть потому что это то с чего всё начинается то есть Это такая твоя тоже Ну можно сказать один из архитектурных слоёв который вот фундамент в плане да то есть вот откуда у от этого зависит Откуда у тебя данные берутся Да Как у тебя эти все реды обрабатываются кто является источником истины в твоём приложении на фронте и на бэнде на самом деле тоже и в этом плане кстати тоже я не могу тебе сказать знаешь типа да ты ну неправильно всё делаешь потому что надо взять Вот эту либу которая на фронте те всё разрулит Вот таких либ тоже нету то есть по крайней мере что касается реакта тендеры все по роун есть короче прям большие вопросы кому-то может попасть что вот такая-то библиотека хорошо решает их задачи А кому-то эта библиотека прям будет всё время палки в колёса вставлять вот есть идёт над этим работа там вот все очень ждут в вид был такой вапор я не знаю да слышал про эту штуку Вот и из него он был подвид а его хотят сделать нас блин Сейчас погодь для в был во пор но его хотят обособить для вид чтобы он был для всех То есть я забыл как сейчас уже она вышла из альфы по-моему типа фреймворк который ssr и роутинг агностик к фреймворк клиентскому То есть ты туда можешь в вставить можешь react можешь не знаю что-нибудь там е и он типа как раз тебе SS Ну даёт на сервере вот роутинг Нормальный наверное кстати Похоже на то что у тебя сделано при этом не привязан к фреймворк это типа круто это типа вот будущее фронтенда в которое мы идём но проблема в том что он всё равно получился достаточно сложный То есть это не такая штука которую ты там прочитал одну страничку а понятно как это подключить и заехали А это прямо набор правил то есть там прямо фреймворк там со своими ограничениями Да возможность гибко что-то настроить но всё равно это такая ээ багаж знаний с которым тебе нужно познакомиться и из-за этого Лично мне кажется что это тоже какая-то Ну что-то что-то как-то подозрительно сложно а почему так почему нельзя проще это вьючная штука да Смысл в том что с рутин есть до сих пор проблемы То есть они наверное это кстати даже знаешь вот мы что-то так говорим то про одно то про другое и вот каждый раз хочется сказать это главная проблема И вот видишь почему-то таких главных проблем очень много наверное в целом проблем много и когда мы говорим про сервер тоже если вот брать чисто твой подход это на самом деле это то что Next пропагандирует то есть Next GS они делают это криво Особенно с точки зрения нормальных кэндес Так это фронтенде с необычными хотелка но они это делают они это пропагандируют всё равно но как-то очень всё криво получается и много вопросов не решают Я сейчас только что понял что у меня видишь из-за со временем выветрился А ты сейчас абсолютно правильно ведь сказал я ведь с этим подходом много лет назад первый раз познакомил собственно в Next то есть именно когда я начал на нём там небольшой проекти для нас делать я такой о у нас используется серверные роутинг У тебя вот эти штуки независимые но проблема именно была в том что сам не на бкдет какая-то обрубка где ни хрена нет И ты такой как бы какая-то жесть И самое главное Они туда ещё вот пытаются тащить и довольно очень странным образом SQL и всё остальное И когда я увидел что появились вот инерция не Disney кстати есть ещё такой супер GL называется там тоже ребята сделали А В общем короче сейчас такие инструменты появляются всё чаще классно то что Red wo ещё можешь посмотреть Red wo типа крас класно в этих инструментах то что на самом деле они не являются типа на твою логику никак не влияют Это всего лишь клей соединяющий там твой любимый фронтенд вый фреймворк и Кэн Да роутинг у тебя кэндо вый поэтому получается глобально в принципе без разницы какой из этих инструментов он главное чтобы тебе не мешал работать но когда я это увидел я такой понял что Концепция nextjs - это классно но только не в nextjs то есть Давайте возьмём классный любой фреймворк и Например я после этого стал много гуглить и смотреть во-первых они сейчас официальные делают адаптеры для рельсы для Джанги и Я подозреваю сейчас официальны будет ещё и для например Фая Ну там уже есть вид и будет ещё для спринг бута И я такой думаю ёлки-палки то есть я смогу использовать То есть мне например springboot джавы нравится да но я понимал что когда я хочу на нём сделать нормальное приложение прикручивать к нему спа со всеми этими проблемами Мы же тобой Вот роутинг это тоже очень серьёзная проблема там да формы тоже серьёзе это ещё надо с беком дружить А как собственно они взаимодействовать будут Но у тебя же ещё есть ошка которую надо ещё проектировать А ещё надо её синка и вот это всё и каждый раз когда я раньше про это думал я такой не ребята я ну домашние проекты точно я не буду так делать это прямо надо вот миллионы вагоны денег загружать команду 500 человек и херачит А вот эта штука позволяет тебе всё это убрать видишь рынок показал что иногда с другой стороны вообще надо подойти к проблеме это то что как раз-таки Давайте вообще сильно всё разделим то есть не попытаемся это всё адекватно связать А типа да горе Ну всё короче вот Пусть сидят бэнде отдельно которые никогда вообще не лазят во фронтенд код и типа Пусть сидят фронтендер отдельно которые типа вот только своим фронтенда занимаемся занимаются Вот и я кстати я на всякий случай скажу Смотри вот я в айтиш с 2000 одиннадцатого года по-моему или двенадцатого что-то такое И на самом деле первое время я работал девопсом причём в правильном понимании этого слова то есть я организацией занимался и во вторую только очередь деплоя и всем остальным я работал ээ там короче продукт менеджером - я админи сервера крупнейшего российского реселлера Это была серверная не не так ээ количество серверов по всей России у нас было где-то в районе 700 вот я это всё отменил То есть я такой на самом деле Хардкорный кэнк строго говоря То есть я там алике сервера писал почти не писал Но вот девопсом занимался прям очень много причём в огромных крупных проектах Вот но При всём при этом я как только в 2017 только через 5 лет году начал заниматься фэндом вот я отсюда вообще вылезать не хочу Мне нравится концепция разделения потому что смотри вот возвращаясь менеджменту браузерное окружение оно стало слож То есть я не при уменьшают катастрофу в том плане что Ну это как операционная система все уже это признали давно и типа писать под это всё дело код адекватный очень сложно То есть тебе нужно Ну я скажу что это невозможно вот я тендером быть Ну я сейчас не в том плане что сравниваю фнн и эн Я говорю что фронтенде быть невозможно на абсолютно адекватном уровне во всех направлениях То есть я не верю что существует человек особенно который работает только 88 часов в неделю что уже некоторые считают что много вообще который работает только 8 часов в неделю и может решить любую задачу во фронте даже с учётом Ну мы сейчас про гуглин конечно тоже говорим то есть Есть Ну как быто не знаю документация н я не знаю уже какого она размера и она покрывает только там Ну предположим 2/3 всего Веба может быть меньше Я думаю где-то только половину Потому что есть фреймворки потому что есть какие-то общие паттерны которые там не описаны и так далее И вот эта вся штука она бы позволяет решать такое огромное количество задач и она такая сложная что Я выступаю за то что А можно пожалуйста без нам как бы и так хватает то есть типа потому что я особенно против вот этой движухи nexts за то что А давайте всё обратно вернём на сервер потому что сервер больше чувствителен к безопасности То есть тебе как ККУ нужно очень хорошо разбираться в безопасности в плане проектирования того что ты делаешь Какие там Ты пишешь утилиты Ну утилиты Я в плане такого КС подхода сейчас говорю у меня вообще обычно наверное я такой за юкс в том плане что я не беру какой-то один крупный фреймворк А я беру какой-то примитивный фреймворк и на него накручиваю кучу всяких штук и вот чтобы это сделать даже или даже если ты берёшь большой фреймворк всё равно сейчас не существует там жава скриптовый точно фреймворков которые решают все проблемы с безопасностью или хотя бы имеют качественные гайды по документации даже такого нет которые бы тея чётко говорили как и что нужно делать И те кто это всё уже прошли когда-то то есть вот ты был бэнде ты там занимался фронт дом тебе как бы это вообще ну не проблема у тебя это интуитивно на подкорке ты автоматом просто делаешь как бы вопросы безопасности они для тебя не вопросы это просто твой кот стайл скорее такой уже да на автомате а люди которые только ходят в профессию Я считаю что вот им говорить А давайте писать вот как тогда типа короче серверу вот на сервере всё делаешь и фнн отдаёшь тут появляется сразу две проблемы первая проблема к тебе приходит типа заказчика и говорит А мне на фронте нужно так короче 100 500 красивых фич сделай-ка пожалуйста вот человек очень много ментальных сил там каких-то тратит на это и у него Ну я не верю в то что у вот человека который только вошёл в профессию и в ней даже год или два у него хватит каких-то сил и ресурсов для того чтобы эн сделать нормально понимаешь и фреймворков таких нет которые за него всё это сделают вот и он будет очень сильно ложать по перформанс он будет очень сильно ложать по безопасности он будет писать тоже вещи которые архитектурно не очень хорошие поддерживаются Да и со временем будут протух поэтому я за frontend First за то чтобы мы улучшали вот варились свои песочнице улучшали то что у нас здесь есть делали микро фреймворки для фн Вот мне кажется в том числе микро фреймворк такой который даёт базу в плане реактивных примитивов А про реактивные примитивы вот есть у меня статья архитектура и реактивное программирование на хабре статья Почему реактивные примитивы Это хорошо потому что они позволяют менее связанный код писать и такой код который вот через реактивность в правильном объёме применён ную написан очень хорошо скели Если вам придётся всё-таки что-то большое писать то у вас будет меньше проблем чем без этого подхода вот я знаешь кстати думал что мы значит закончив прот менеджера перейдём к реактивности Я понял что мы не успеем уже и Наверное это Правильно Потому что видишь со стейта гораздо глубже история потому что у тебя тут действительно и роутинг возник который тоже является огромной проблемой и очень связано кстати со стейт менеджерами Да потому что у тебя при изменении там тоже как всё это сбрасывается что там ла ия загрузка данных первичная Да их соотвественно обработка временное состояние Если у тебя драфты есть какие-то по форме всё это как но сохраняется или нет в спа роутинг да то есть ты Ну да к этому очень много вопросов Это конечно жёстко мне слово говорю я сразу пошёл Вот в тот путь в который пошёл у меня поэтому роутинг есть только на ке и мне сильно всю жизнь упрощают и в этом плане у тебя действительно Ну прос прози нет ни о ЧМ думать не надо а здесь У тебя ведь я правильно понимаю что как ни крути современная любая роутинг Либа она обязана с твоим текущим СТМ синка менеджером Я имею в виду иметь к нему адаптер Проблема в том что они не имеют то есть обычно современные роутинг они очень сильно приты к фреймворк реакту или там ну какой-то вби и у тебя получается очень сложно наоборот писать вообще ты конечно так спросил вот смотри вот есть типа там Давай
сейчас Sol SW Аля что-то забыл Ну ладно я писал адаптеры ко всем этим библиотекам да это только в библиотекам с роун ещё сложнее ещё сложнее там Слушай вот сзади во Сейчас начнётся конечно но да это вот к вопросу о том Почему я избегаю если можно не писать о лучше не писать о потому что ни к чему хорошему это не приведёт Ну до сих пор просто паттерны программирования Они они Они они не применяются А если применяются то вот выдра какой-то один там засунули его там где надо И не надо и типа ещ и продали это как типа смотрите мы там круто это сделали оно там местами к месту так вот писал адаптеры у меня менеджер я писал адаптеры ко всем этим библиотекам у всех библиотек есть проблема вот единственная библиотека Solid может слышал она тоже сейчас немножко хайпует очень быстрая типа по перформанс особенно сервис рендеринга типа обгоняет там всех но смысл в том что вот у неё
есть хелперы для связи с каким-то внешним реактивным миром то есть там пря по-моему так и называется From или что-то такое а во всех остальных библиотеках вот просто закрытая дверь То есть тебе либо надо во вну Тебе может повести как в реакте тебе нужно лезть в кишки ре То есть у них пря вот это вот как там видел вре есть глобальная переменная которая пря называется
это перемен называется вот тебе надо в неё лезть короче чтобы что-то сделать там ну оптимальное то есть чтобы оно по перформанс было не ужасно и чтобы оно работало удобно чтобы было не совсем кривое Что тебе там надо кучу писать чтобы просто какую-то маленькую штучку завести В смысле пользователю не автору библиотеки А чтобы автор библиотеки тебе дал с помощью которого пользователь чтото
приму этот й менеджер вот во VI например вообще нерешаемая проблема в принципе как сказать сама реактивность вю оптимальная Но биндинг к этой реактивности не оптимальные то есть нельзя написать оптимальные биндинг там будет куча лишней работы она прям биндинг к VI они такие типа я не знаю как это писать короче Включи всё И ничего никогда не выключай вот а оптимально оно работает там куча кода лишнего выполняется неважно я типа я сам в себе вживу а что ты там делаешь Я я не хочу с тобой вообще общаться Вот Потом КТ например вообще ну реакт знаешь такую библиотеку это типа они косят под реакт и у них вообще супер просто они сделали свою библиотеку отдельную реактивность Она крутая Она быстрая она вообще на самом деле я считаю была очень большим толчком в сторону того чтобы сигналы это новый Пропосол по реактивности в JavaScript э стал развиваться скажем так то есть при актовский сигналы они прям показали что смотрите как круто можно быстро легко эффективно там памяти мало использует и так далее так вот есть библиотека которая рендерит просто вьюшку есть сигналы которые типа реактивность обслуживают просто стей они сделали бли ну две библиотеки которые обе называются прик и они вместе дружат очень круто то есть ты можешь сигналы во Вью использовать очень мало кода занимает очень быстро работает это прям на вю похоже очень круто но они связали сигналы из прита и из вьюшки очень страшным хардко дом прям там просто типа что тут происходит там типа как алер какой-то вообще И если ты хочешь сделать тоже биндинг к ним то тебе нужно вот такой же ассемблер написать то есть ты берёшь Короче форка этот аем в котором вообще ничего не понятно то есть тебе нужно понимать внутреннюю структуру данных то есть там какой-то двух связаный лист с какой-то там ну дополнительной Мета информацие которая обслуживается определёнными состояниями не выраженными то есть только они знают что у них есть алгоритм который обходит по определённым моментам этот linked L короче и когда-то он там что-то удаляет А когда-то нет ты это всё должен загрузить в свой мозг короче написать такой же код который будет делать тоже самое как-то там внедряя в него и после этого ты сможешь написать биндинг к при акту который будут нормально работать короче не просто там ну грубо говоря как-то работать а прямо оптимально хорошо то есть там чтоб по перформанс адекватно это всё было Вот это короче всё очень ну это безумие То есть ты куда не заходишь ты такой типа тебя просто в лицо бьют и говорят что не так Так просто Нельзя да обрадовал ты конечно хорошо я тогда ещё посижу знаешь подожду когда эта вся экосистема подраз вьётся и никуда дёргаться не буду потому что мне пока и так нормально знаешь что хотел спросить вот мы с тобой много чего обсудили Но знаешь что мы не обсудили совсем это историю про вки опиш И связь с ней да потому что такое ощущение что это всегда рядом со Ну то есть стейт менеджеры сами вроде как не решают эту штуку но над ними всегда есть какая-то либо приблуда сбоку либо какой-то там не знаю дополнение которое это делает Вот например в ките у нас КТ есть да там есть отдельный Rea quy который сейчас переименовали Да там тоже какая-то своя история Вот расскажи вот зн например тоже Сай или вот у тебя где эта проблема кем она решается как какой какое предложение короче что делать Слушай это очень хороший прямо вопрос большая тема А ну зуст никак вообще там ничего не решается типа забудь просто там это базовый примитив это типа кирка она очень титановая короче кирка Вот ты ты горный Промышленник в 2025 году вот и тебе дают я не знаю титановую кирку которая из вибраниума Давай даже кирку вот зн - это кирка из вибраниума круто круто много ты ей можешь сделать нет вот вот это вот зн Это по поводу управления Да синхронными всякими этими штуками react quy хороший давай вот такой хайлайт как бы сделаю общей беседы Rea хороший если мы говорим о Ну реакте он сейчас называется он хороший то есть в том плане что в НМ там есть проблемы они очень сильно привязаны эти проблемы к в том числе но он действительно там грубо говоря их дизайн особенно в рамках реакта в которых им надо жить Мне нравится они сделали много хорошо там вот я их прям могу очень сильно хейтить И у меня есть прям по-моему доклад У меня есть кстати против риама но да Много сделали хорошо а про РКТ сразу скажи то есть отодом
илит очень много проблем вокруг окружения где ты используешь то есть смотри КТ в редакс и у него много с Рексом связанных проблем фич у него там не знаю типа давай условно по десятибалльной шкале пять там или вот так вот фич в в redx quy Да по-моему как-то он так называется Да да там грубо говоря фич на опять то есть ну они что-то решают То есть можно с этим работать как-то но есть много связанных проблем с самим Рексом А вдак в T quy фич типа там не знаю на 78 из десяти То есть он мощнее и наверное для react разработчика он проще но если мы говорим не только про react про там остальные библиотеки Смотри вот что мне очень не нравится в теста Они говорят Мы типа микрофронтенды тоже нас можно использовать то есть мы типа универсальные мы не привязаны Мы переименовались в quy мы не привязаны к реакту у на ядро которое обслуживает этот кэш асинхронный оно типа отдельно лежит но проблема в том что ты не можешь переиспользовать ты не можешь написать модуль который работает сам по себе с асинхронной вместе с react quy и этот модуль за использовать отдельно в реакте отдельно в потому что они на самом деле свою внутренности свои внутренние пакеты и утилиты вынесли в отдельные пакеты но всю логику взаимодействия с этой библиотекой ты пишешь отдельными пакетами то есть там нет кор пакета который ты
импортную для viw отдельно и абстрактный модуль который может переиспользовать во viw и в реакте написать не можешь и это как бы ну очень странно Извини а при этом вся эта система она с всё-таки как со стеймс То есть он же не является йт менеджером э же штука да Ну это такие это условности всё по поводу асинхронный и йт менеджмента и что такое й что такое кэш вот я А ну да у меня есть статья про й менеджмент типа на хабре тоже она называется по-моему ну что-то там Я не помню что-то про менеджмент и там как раз описываются Я на такие уровни разделил что вот есть кэш это частный случае состояния состояние - это просто грубо говоря баз который описывает согласован данные и как бы у нас больше проблема не с тем даже как это назвать а в том как это понимают в индустрии то есть вот мы сейчас с тобой договоримся об одной терминологии А после этого пойдём разговаривать с другими людьми они нас либо не поймут либо поймут не так так что тут очень сложно как-то договориться на этот счёт но смысл в том что очень удобно Если у тебя конечно один там стейт менеджер обслуживает и локальное состояние и глобальное состояние и асинхронное состояние потому что тебе нужно писать меньше клеевого кода То есть тебе чтобы перегнать состояние из одного места в другое тебе просто нужно написать меньше кода Меньше биндинг меньше у тебя будет гонок состояний Потому что если у тебя данные перегоняю вот так ну там давай например из-за синхронного какого-то чего-то там в глобальное состояние а потом в локальное состояние компонента у тебя данные скорее всего либо дублируются если это разные библиотеки Либо они перетекают но там могут нди вникать То есть у тебя Ну понятно просто быстренько там что-нибудь перечить А у тебя там ещё рендеринг какой-нибудь завис на несколько сот миллисекунд а на самом деле браузер уже другой запрос другим что-то поменял то есть у тебя Ну браузер всё-таки браузерная среда синхронная то есть у тебя несколько фичей может разрезов виться пока у тебя там рендеринг на полсекунды Завис и у тебя вот всё уже что-то Там короче не так сработало как ты ожидаешь вот поэтому конечно очень хорошо чтобы был один менеджер и react quy - это как раз таки библиотека которая рассчитана только на синхронный стек менеджер только на запросы к данным с каким-то айтом типа фич то есть они рассчитаны на то что у тебя есть там состояние пенди типа первый запрос последний трать при какой-нибудь Network Error и так далее но они например абсолютно никак не решают сейчас уж извините я буду реклами ещё одна статья отменить нельзя продолжить на хабре которая показывает очень простой пример рейс кондишен когда у нас может ну не те какие-то данные отобрази или не так как-нибудь что-нибудь зае или пользователю что-нибудь не так отобразится в в том самом потому что он слишком утилитарный он отдельные запросы не трека ет между собой связь между ними не видит То есть он ты все запросы создаёшь по отдельности и если у тебя от одного От данных одного запроса зависит другой запрос что Ну на самом деле очень часто бывает типа ты сначала спишь скаков Заева потом к одному конкретному шнику или ко всем В общем он это не синхронизирует и у тебя могут показываться данные там по например одним выбранным фильтром а фе при этом уже по другим Ну свежим фильтрам и из-за этого тоже обычно это решается тем что когда пользователь что-то делает Ему просто весь экран так блоку короче подожди у нас тут Лонг идёт подожди нельзя стой стой йс мы тво фильтры обновим всё тепер Ты можешь работать Поздравляю А уточни яки невс поня как бы то что он делает запросы там описываешь данные вот это всё понятно но в итоге в тто кто кладёт то есть он адаптер какой-то и сам с ним работает Или он тебе говорит вот данные сам клади в стейт у него есть биндинг к реакту То есть он грубо говоря сам стейт кладёт к реакту ты имеешь Прям usate просто юзает ну он под капотом usate юзает Да я понял но получается В итоге что всё равно это отдельная фигня то есть это не твой там если ты там не знаю вот ретом заюзал или Эктор какой-нибудь у тебя будет Вот своё и он тут в реакт сам положил Я не знаю там доступ через хуки Да какой-то у тебя получается ты можешь что-то там как-то там написать но в целом всё через хуки прогоняет Да у него есть на самом деле внутренний менеджмент причём такой довольно продвинутый но они его не экт наружу тоже Возможно они его ещё только готовят и когда-нибудь приготовят но не сейчас вот так что у тебя у них внутри есть довольно интересный но доступ к данным только через хуки там очень простенько типа и вс кстати в этом плане интересно КТ вс-таки интегрирован поэтому может быть могут быть преимущества Потому что себя всё в одном месте ици больше Вот давай сейчас рви меня если я начну зависать постараюсь сечас прям за минуту рассказать главная проблема реактивности это плохая Дружба несколь реактивных симарев это есть список подписчиков ты по нему итери и проблемы начинаются когда у тебя в одном из подписчиков в середине Вот у тебя есть там пять подписчиков или четы знаю в середине этой Рации у тебя ещё один э например Подписчик создал И тебе в этот момент Опять этот список линеров его нужно как типа продублировать или здесь ещё раз
проривати ржа новых конкурентных обходов подписчиков скажем так классические реактивные системы которые Ну известны уже там не знаю лет положим пять они хорошо знают как решать эту проблему но проблема в том что они абсолютно никак вообще не решают эту проблему если их две то есть если у тебя отдельно реак хуки и эффекты use эффекты и отдельно какая-нибудь Библиотека У тебя начинается очень большая головная боль Особенно для автора библиотеки А если у тебя там какой-нибудь ещё ещё что-нибудь то Ну ещё больше проблем Вот и если тебе нужно даже предположим Ну короче да если тебе нужно вс-таки с каким-то глобальным всё равно йм связать quy то у тебя могут быть там некоторые коллизии проблемы там в логах какую-то странную фигню будешь видеть вот а и в редак это в этом плане получше всё более линейно понятно просто там как бы последовательно Прости ещ хотел сказать это как он который е всё по два раза тут наверно тоже добавляет просто это очень больно вот реально соблюдать они это прям ну Я рекомендую отрубать его То есть он он как бы ну больше вредит чем помогает потому что иногда он тебя Может прям надолго заставить типа не понимать что происходит вообще вот к сожалению то есть ну знаешь он как бы он тебе говорит типа ты никогда не дублирую там лаэ не там где надо Проблема в том что Ида тедо понимаешь Вот когда ты проектируя должен быть Типа она должна тебе помогать не делать плохо но она не должна тебе запрещать делать плохо мне так кажется потому что когда тебе потребуется какая-то необычная фигня Ты просто возненавидишь всё это всю эту библиотеку которая Дава тебе эту опиш и реакт он именно такой то есть он тебе прям очень сильно запрещает делать не так как он хочет А тебе пря вот надо стоящему Надо иногда сделать какой-то сайд эффект в рендере Ну у тебя там какая-то фигня Каяни библиотека старая какой-нибудь там кри странный который не так работает то есть Ну вот Ну надо тебе у тебя такая задача и ты начинаешь от этого страдать весь этот короче Рид отрубает конечно решение рект в этом плане недружелюбный я ещё быстро хотел сказать Вот так сравнить У нас очень мало библиотек для фенга данных на удивление вот у эффектора ещ есть неплохой и ну как бы я не знаю Ответьте В комментариях если вы с этим не согласны ртами самая продвинутая система по обработке сайд эффектов в том плане что мы очень Сильно активно используем асинхронный контекст Мы в жава скрипте в браузере не существует асинхронного контекста он есть только ВНО вве он есть И он помогает фактически тебе следить что у тебя вот есть какая-то цепочка и чтобы ну не знаю там обор нуть её если у тебя изначально начало цепочки сломалось да то есть и так далее мы его полифил фактически такими какими-то своими способами больше этого нигде нету почему-то я очень удивлён потому что в эн фреймворка это Ну практически стандарт как бы Ну по крайней мере это не экзотическая штука ну то есть у тебя вот есть реквест и ты например айдини этого Квеста хочешь асинхронной функции всегда доставать из асинхронной функции именно Тот айдини который к этому квесту относится Да и ты не хочешь чтобы у тебя айдини как-то там путешествовали и попадали из одного Квеста в другой ты используешь контекст это очень Прямо удобно в ртами Такая же история и она используется в основном для артин то есть вот я говорю статья отменить нельзя продолжить мы следим если у тебя из запроса данные используются в другом запросе а потом в третьем первый запрос перезапустил то мы все отменим которые сейчас есть и с точки зрения ю пользователя это прямо максимально предсказуемый и то что он хочет вариант То есть он хочет видеть что если он что-то поменял чтобы у него все зависимые данные сразу отобрази что там не знаю загрузка новая идёт или ещё что-то А вообще со всеми другими библиотеками почему-то так делать нельзя То есть если ты фильтры какие-то меняешь то вот классический приём всех крупных даже сайтах это просто залочить весь экран не давать пользователю ничего делать всё там пролагать вот так вот Вот поскакать потому что он рендерится ты раз и только после этого короче у тебя появится доступ ко всему остальному сейчас напоследок быстро скажу с асинхронным для разработчика библиотеки обработка асинхронных операций - Это довольно сложный домен работы то есть там много неочевидных проблем много гонок состояний э особенно если делать кэширование я там кэширование несколько месяцев наверное фултайм делал такое чтобы оно не бажала как бы в этом плане это прямо сложный домен поэтому мне кажется на фронте с этим всё плохо Вот например в ртами на каждый отдельный запрос можно навесить отдельный какой-либо кэш и к этому каждому отдельному кэш можно отдельно запер его через вот этот абстрактный перст адаптер Куда ты выберешь То есть у нас вот эта вот композиция опишет она очень сильно мы её прорабатываем Вот лично Мне очень не хватает это в других решениях То есть у тебя всегда живёт отдельная реактивность отдельно асинхронный кэш отдельно персис например и тебе чтобы это всё подружить тебе нужно разные библиотеки брать там разные условия Писать много вручную всё это прописывать вот и почему-то ну это всё ещё проблема кроме как в рядами Я не видел чтобы где-то это решали Я тебя слушаю думаю Интересно у нас в реальности же огромное количество проблем которые мы описываем они являются Ну типа случайной сложностью потому что библиотеки где-то не дружат Ну то есть мы очень много фронтенде которые прямо хардкорно всё это пилят занимаются не решением реальных задач которыми должны заниматься а занимаются тем что борются просто с системой и мне знаеш что интересно ну типа это решаемо вообще глобально или нет Я тебе такой провокационный вопрос как мы до этого десятилетиями писали толстые клиенты до Веба очень плохо не было хорошо Не ну тебе если тебе любой дельфис приходит и говорит Ну я я так представим что это дельфис я говорю я на дельф такой 20 лет назад делал да Ну так мы и делаем мы делаем мы просто делаем без удовольствия скажем так Но мы же делаем то есть оно получается Ну и на Делфи как бы что мы типа сейчас откроем двадцатилетний кот на Делфи и такие А ну тут всё понятно то А как ты решал Расскажи мне вот интересно как они там это решали все эти проблемы Да и сейчас те кто толстые клиенты вотт Brain херачит свой редактор там посложнее будет чем фронт у многих да да ну так они Ну все все страдают все пере придумывают свои фреймворки то есть это ну страдают ту тоже как бы вопрос же отношения то есть ты для кого-то страдание для кого-то это ну задача типа в та Бакт типа надо там это добавить это пофиксить типа всё ити нормально Тут больше вопрос страдают те кто пытаются клепать много одинаковых сложных приложений вот так вот вот эти люди страдают А те кто пилят что-то одно большое у них Под них всё равно не будет универсального решения они всё равно просто вот поэтапно всё делают развивают Ну и если посмотреть вот можно не знаю наверное самый большой пример это какие-нибудь там Google документы и Много Они страдали делать Этот сервис То есть это Это не просто Они всё время борются со своей платформой у них всё время какие-то проблемы они всё время пытаются вводить новые стандарты для упрощения своей кодовой базы да или там у нас только недавно Появилась возможность биндинг к файловой системе то есть прям доступ к папке Получи на компьютере пользователя сначала как бы это всё в CH добавилось а потом такие AD о Photoshop в браузере типа смотрите что мы сделали ну то есть они же Ну никак не могли это сделать раньше то есть у нас всё развивается пишем продолжаем писать всё это не было никогда хорошо на самом деле и смотри не было никогда таких сложных приложений как в брау Ну не было никая фигмы То есть типа на дефи фигму такого pH Слушай ну Jet Brain Вот давай говорю возьмём
эту проблему пло им оче плохо Никита тонский знаешь про его историю Я смее работал он меня когда нало по
на эна или как там называлась у них не получилось у них большая проблема у Джет Брейн сейчас они типа они не знают что с этим делать Ну не я не работаю в Джет бренс Может я сейчас всё вру Но это то что я вижу со стороны то есть они несколько лет писали новую иде на новых технологиях у них ничего не получилось тонский до сих пор делает фреймворк который он вынес из этой иде для того чтобы рендерить картинки Ну типа визуальный фреймворк делает графический Я так понимаю он не выстрелил То есть у всех проблемы и у ДТ брейв сейчас огромные проблемы Они до сих пор они годами делают коллаборативные которая с этим не так они годами пытаются сделать архитектуру чтобы их ишка работала ядро ишки работало на сервере Да распределённая система А на клиенте был ну тонкий клиент типа то есть это вот ид с контейнерами То есть это вот то что они проморгали они не могут гнать у них не получаются они Ну у них куча ресурсов они бегут они пробуют новые иде даже делать на этой архитектуре Они наверное постоянно фактор старое но они еле-еле просто пытаются догнать и не догоняют или догоняют очень медленно абсолютно не с таким не той с той скоростью с которой хотели Да Слушай а вот да войско же у нас на электроне и что они там используют в плане типа рек не по-моему там и был Нет там вряд лире Смотря для чего неважно что они используют для всяких
сайдбаре дерин кода они используют Монако который написан ну там просто много императивного кода я с монака натра в своей жизни да и при этом Несмотря на то что его делает такой Монстр как Microsoft с ним прям всегда сложно работать с Монако его пытаются делать пор табельным его используют враз ги продук то есть Мо он на хромиум похож его реально используют в реально других продуктах но при этом ВС равно каждый год там не знаю меняется версия документация что-то не работает сложно прикручивать не заводится в разных браузерах и так далее ну а про менеджер ты знаешь то есть в итоге Какой не использу я думаю что там скорее всего просто какой-то с Шами что-нибудь такое потому что это сложное приложение конечно интересно Если у них там вот так вообще потому что в принципе Кстати у них там На любые изменения же вот эта вот фигня справа крутится поэтому вполне возможно я такую историю расскажу насколько я вижу могу ошибаться вот когда-то из по-моему дот нета к нам пришёл RX это да было такое Но в основном Эд в том плане что нативные языки клиенты перенимают из Веба паттерны менеджмента то есть swiftui это такой ирт с фром это всё попытки в react только по-своему я очень много истории слышал о том что люди на каком-нибудь по-моему Джаве или ещё где-то попробовали редакс такие Да это Гениально типа как вы так придумали Мы тоже так хотим А мы тоже редак у себя используем на нативном клиенте типа кого-нибудь Джа так уб Мы вроде вди планеты всей в этом плане frontend веб сайти Да ну я сейчас наверное как Дилетант просто скажу всё-таки у них если берём прям прямо вот толстый классический клиент У тебя э вообще-то всё чуть попроще потому что во-первых у тебя нет роутинг никакого у тебя нету роутинг у тебя просто приложение Да работающее А и во-вторых у тебя нету Кэн как отдельной штуки у тебя это одно приложение которое просто рабо удобно Кстати да у тебя как меньше гонок состояний коллизий и так Дале Ну проблема там с 100% много всё равно синхронность но у тебя но у тебя нету типа опиш у тебя просто вот не знаю коллбэк И ты в нём пошёл и файловую систему что тебе надо сохранил тут конечно навер можно но по крайней мере действительно у тебя всё как бы локально В каком-то смысле И поэтому ты проще Да наверное поэтому многие пробле сеть не то есть с одной стороны да тебе нужно с опиш в опиш ходить-то всё равно То есть у тебя же не только файловая системы у тебя прям ну ну данные на в Облаке реальные с другой стороны у тебя очень много который ти сеть гнт То есть ты всегда грубо говоря изначально делаешь какой-нибудь Ну в той или иной степени что шь всё и у тебя как бы всё работает либо ты делаешь всё собственно точно также как то есть почему сейчас Ну тоже и так далее популярны потому что тебе нужно просто вьюшку для ошки показать и как бы какая разница на чём писать Ну грубо
говоря воз
позвать Никиту и тему подбирал типа под него Вот ты сказал что редактор новое дел это прямо идеально как продолжение знаешь всех этих наших историй поговорить и про naive Если кто-то вдруг нас смотрит и является Мега экспертом в этой теме Приходите Мне нужен такой человек я хочу поговорить про native Ну может быть вообще про мобильную разработку в целом а так вообще Артём те большое спасибо что прил мы с тобой затронули только половину наверно если не меньше того что хотели но мне кажется мы плотно поговорили и знаешь я тебе что скажу вот когда в прошлый раз собственно был Ситник и мы с ним поболтали его наш видос сразу взяли на разбор Да там устроили по нему разбор там типа всё значит всё не так всё плохо всё разнесли Мне просто кажется что наш с тобой э сегодняшний созвон тоже тянет на разбор Так что если Ребята кто смотрит обязательно Возьмите Разберите Скажите где мы были неправы что будет не так какой состо лучше в общем Поделитесь своим опытом потому что звучало довольно фатали я бы сказал Да что что мы в каком-то сейчас пока таком состоянии как будто бы мы скорее запутывается чем выпутываться
Ну фокусироваться на смыслах а не заниматься вот этим вот ежа с ужом соединять но этого сейчас пока много в любом случае тебе огромное спасибо что рассказал ты на мою мировоззрение на моё мировоззрение повлиял сильно Надеюсь что ты повлияет которые нас слушают Да спасибо большое что позвал это очень интересно и большая честь на самом деле у хекслет побывать спасибо ну классно если так да А ребята обязательно подписывайтесь на канал Заходите в мой Telegram организованное программирование где я пишу всякое разное про разработку регулярно и до новых встреч Всем спасибо всем
пока
Creators and Guests
