169 похожих чатов

Во вторник (2 ноября в 17:15 Мск) я выступаю на

holyjs с докладом "Докручиваем ApolloClient до энтерпрайзной разработки".

Есть видео с прогоном секции лайф-коддинга из моего доклада:
https://www.youtube.com/watch?v=uXBr6IHDsvY&list=PLnieus7KgTVFRMDvVc0H4TMnv5CORMig0&index=1

Посмотрите кому интересен АполлоКлиент 3. Зацените как мы у себя на работе его используем (уже года полтора). Вы наверняка, что-то новое и интересное найдете для себя. Репо на гитхабе - https://github.com/nodkz/example-apollo3

Хотелось бы получить от вас фидбек, чтоб я успел до выступления поправиться:
- что было непонятно
- оговорок по видео конечно было много, но что прям я сказал такого, что можно назать "Соврал с большой буквы"
- что вызвало у вас Вау-эффект? (вдруг был такой момент)
- если вы с аполло более 2 лет: что вы нового узнали? (когда уже вроде все знаете, а тут раз и свежак)
- что бы посевотовали добавить или убрать
- ну и в целом как вам видосик?

Мой доклад будет на час (и наверное выйдет в паблик через полгода). Ну и потом еще будет дискуссионка часа на полтора (она к сожалению будет не под запись). Если подумываете купить билет, вот промокод со скидкой 10% – NODKZ2021JRGpc

20 ответов

68 просмотров

Привет, а где фидбек оставлять?

Pavel-@nodkz Автор вопроса

норм, сжато и четко. у нас на проекте такой же подход на процентов 80-90%. Автоматизация 1 в 1

Pavel-@nodkz Автор вопроса
Dm K
норм, сжато и четко. у нас на проекте такой же под...

Может что добавить есть? Интересно в чем разница - в лкчшую или худшую сторону?

Pavel @nodkz
Может что добавить есть? Интересно в чем разница -...

у нас достаточно тяжелые запросы, мы создаем еще один уровень хуков, где прячем всю логику - апдейт, ремув, апдейт кеша и тд. вотчера на генерацию типов и хуков не добавляли нету необходимости. yну и мы еще сидим на 2 аполло)

Мы у себя используем typed document node. Вопрос почему вы не используете? Ещё мы все запросы и мутации врапаем в хуки ручками и возвращаем нормализованные данные. Это упрощает нам жизнь если что-то меняется в схеме. Также гораздо проще рефакторить код. Полностью отказались от локального стейта аполло. Есть гараздо проще альтернативы и работают гараздо быстрее, аполло кэш ну очень медленный, когда запросов становится много.

Alex
Мы у себя используем typed document node. Вопрос п...

плюсую за typed document node, именно эти и юзаем. а что для стейта используете?

Pavel-@nodkz Автор вопроса
Alex
Мы у себя используем typed document node. Вопрос п...

typed-document-node вы скорее всего с urql используете. С аполло клиентом он менее удобен. У нас все запросы и фрагменты уникальны. К каждой компоненте идет свой набор "запчестей" графкуэль запросов. И эти запчасти всегда лежат рядом с компонентой, чтоб открывая папку сразу видеть насколько компонента и как зависит от сервера. Ну и изменения любой запчасти, не повлияет на другие компоненты, поэтому у нас рефакторинг тоже достаточно простой. Аполло действительно тормознутый, но для большинства задач его хватает с лихвой. Там где большие таблицы, или идет частое обновление мы без кеша и нормализации юзаем. Но таких мест раз два и обчелся. У вас я так понимаю urql используется?

Alex
Jotai

интересно. удобна ли такая атомность для хранения больших данных с графкл?

Dm K
интересно. удобна ли такая атомность для хранения ...

Нет мы не дублируем данные из кеша в локальный стейт. Только локальные поля. Могу привести реальный пример: есть массив из тысячи статей. Нам необходимо добавить чекбоксы к каждой статье. Самый очевидный вариант просто расширить тип статьи полем checked, но при таком подходе аполло кеш очень медленный когда нужно выделить все статьи или несколько статей. Что мы делаем, храним ids с клиентскими полями в jotai, пишем локальный резолвер в typePolicies - getArticleById. Каждый компонент статьи получает id и checked и вызывает getArticleById для получения данных с кеша. Убиваем 2 зайцев, убрали проблему с перформансом, переререндер происходит только там где надо. Раньше так делали на редаксе.

Pavel @nodkz
typed-document-node вы скорее всего с urql использ...

У тебя в видео есть кусок про improtReactHooksFrom. Где можно глянуть на твою имплементацию?

Pavel @nodkz
typed-document-node вы скорее всего с urql использ...

Вы не шарите фрагменты в приложении? Т.е. все фрагменты у вас уникальны?

Alex
Нет мы не дублируем данные из кеша в локальный сте...

отличнй пример, локальный резолвер в смысле через филд резолвер и @client директивой? Мы конечно с резолверами не заморачиваемся, у нас в кеше нету больших листов максимум 50 айтемов, но да, если надо селектить айтемы то в редаксе храним айдис

Alex
У тебя в видео есть кусок про improtReactHooksFrom...

https://github.com/nodkz/example-apollo3/blob/master/src/utils/extendApolloHooks.ts

Alex
Да да филд резолвер

хмм, так зачем вообще резолвер на чекед, если хранить айдихи в атоме. на бек отправляется скорее всего что-то типа {action: ‘remove’, ids: […]}

Pavel-@nodkz Автор вопроса
Alex
У тебя в видео есть кусок про improtReactHooksFrom...

Вот репка с примером из видео https://github.com/nodkz/example-apollo3

Pavel-@nodkz Автор вопроса
Alex
Нет мы не дублируем данные из кеша в локальный сте...

Отличный кейс. У нас ребята похожим образом обходили проблему через readFragment

Pavel-@nodkz Автор вопроса
Alex
Вы не шарите фрагменты в приложении? Т.е. все фраг...

Да у нас квери и фрагменты привязаны строго к компонентам. Это именно то место, гле я ребятам говорю, что copy-paste это хорошо. Т.е. при редактировании требований к данным к компоненте, мы уверены, что ничего по соседству не сломаем. И не начнем тянуть где не надо лишние данные, когда добавим новое поле для доугой компоненты.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта