Pull to refresh
12
0
Завьялов Вячеслав @idmx

Frontend-разработчик

Send message

Хитро, хитро)

Хорошая выжимка видео, помогает, если не хочется смотреть весь видос и особенно в качестве конспекта)

Спасибо, возьму на заметку. Как будет время покопаюсь)

Да, техническое образование у меня есть, в котором присутствовал и ассемблер и C++. И я бы с удовольствием взглянул на ваш алгоритм, возможно действительно можно улучшить, так как я вполне осознаю, что это на данный момент временное решение и по хорошему улучшить алгоритм отрисовки

Способ решения выбран был просто - необходимо сделать быстрее в короткий срок без долгих обдумываний и переделок. Плюс это новый метод, который хотелось опробовать и который неплохо справляется в данной ситуации

Проблема не в сложности алгоритмов, а в количестве прилетаемых данных. Сложность O(n^2), так как идет маппинг по категориям (их максимум 5) и дальше внутри категорий раскидываются данные по компонентам фильтров в зависимости от вида фильтра. При этом данные уже преобразованные, поэтому дополнительных преобразований не производится, кроме как просто распределения данных по компонентам.

И как я и писал проблема возникает только при большой выдаче, так как фильтров может прилететь очень много.

Можно сказать, что это бред, но как я и сказал - это внутренний продукт и достаточно специфичный и из-за такой специфики возникают такие сложности, поэтому прошу не переходить на оскорбления

В данном случае пришлось поставить задержку процессора в производительности, так как на мощных компах (которые есть не у всех пользователей) разницы практически нет.

Какой итог?

При применении setTimeout(getFilterData,0) расчет начинается после прохождения цикла в EventLoop и возникает такая ситуация:
- Просчитались открытые категории
- Сайдбар открылся
- Нажать никуда не получается, так как начал отрабатывать колбек из таймаута и начались расчеты закрытых категорий, а пользователь в это время теряет интерактивность, так как еще не все успело подгрузиться и отрисоваться

При применении requestIdleCallback такой проблемы с потерей интерактивности интерфейса замечено не было (пробовал несколько раз)

Да, тоже его видел, там действительно на setTimeout и это скорее на данный момент единственное похожее решение (по крайней мере я других не вижу пока что). Когда нибудь и они поддержат этот метод:)

На самом деле еще зависит от мощностей устройства на котором воспроизводится. У меня на старом маломощном ноуте бывало подвисало уже при 10-15 (ноут уже совсем убит), поэтому мне кажется сказать точную цифру в данном случае нельзя без описания дополнительных условий

Понял, спасибо за разъяснение)

Статья очень информативная, спасибо! Я хотел задать вопрос по поводу Modern. Что в данном случае принимается за нее?

Было бы удобнее, если бы столбцы в таблицах были бы хоть как-то подписаны. Сложно сразу сориентироваться. Читал с телефона, сначала показалось, как бессвязный текст в столбцах

Из развивающихся библиотек я бы еще Consta наверное упомянул, сейчас с ней работаю, вполне не плохо. Есть конечно свои недостатки, но так как разработка ведется у них постоянно, то можно и в телеге в чатике разработчиков просить баги поправить

К сожалению, не я решаю пул технологий и мне сказали пока Vite не трогать, оставить на будущие эксперименты, когда будет больше времени) Так бы сам попробовать его хотел на каком-нибудь коммерческом проекте

Да, так и сделал по итогу ж) Единственное, что вокруг куча разных сборок, да и сам их пишешь не каждый день, поэтому хотелось бы понимать, нормально ли вообще делаешь или фигню катаешь какую-то

Действительно большинство скорее всего использует уже свои настройки и сборщики. Но я лично точно встречал пару проектов в продавшене на CRA

Да, CRA в принципе холиварная вещь. Посмотрим, что по итогу они из него сделают

Рад, что моя статья вам понравилась, спасибо за добрые слова)

Насчет деструктуризации при использовании всего объекта. Да, вы в какой-то мере правы. Но я думаю, что в проекте лучше все держать в одних принципах и одном синтаксисе. Сейчас деструктуризация не мешает, а завтра надо будет отрефакторить или изменить логику и уже используется не весь объект и все равно менять использование.

Спасибо за наводку) Интересный кейс, сам с таким не сталкивался. В будущем постараюсь разобрать его и, в случае чего, написать статью, так как действительно звучит как проблема, хоть и редкая, но необходимая к освещению

Безумно интересная статья. Если честно, даже не подозревал, что можно таким способом реализовывать описанные вещи, так как мало с таким сталкивался. Спасибо вам)

Очень интересная и познавательная статья!

Хотел бы спросить у автора по поводу моральной составляющей разработчиков. Все описанное как-будто бы делает работу разработчиков очень динамичный и постоянно напряженной, так как надо каждый час за чем-то следить и быстро править. Как с этим справляется команда? Или есть условно дежурные, которые периодически меняются и команда является не сильно маленькой, чтобы не бросать груз ответственности на пару людей?

1

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Frontend Developer
Middle
JavaScript
Git
HTML
React
CSS
Redux
SCSS
TypeScript
Node.js
NextJS