Обратная сторона React
Здарова, работяги!
Как я понял из опроса выше, всем очень интересен React🖼️ и очень интересна архитектура. Поэтому начинаем холиварную тему про архитектуру в приложениях со старым добрым(так ли это?) реактом.
Не буду лить воду, обойдемся без подводочек — такого большого кол-ва страшных приложений, как на React, я больше ни на одной другой технологии не видел. Кто-то пошутит, что просто на других технологиях самих приложений очень мало, особенно на моем любимом Angular💻, вот я их и не видел. В этом есть доля правды, но лишь доля. Даже если смотреть отношение страшненьких проектов к реально хорошим, React в топ не выбьется, по моему опыту. Почему так?🤔
Уже около года я много занимаюсь разработкой на чистом ts 💻 и js 💻. И знаете, что я вам скажу. Это сильно отрезвляет. Да, именно так, отрезвляет. Этот опыт помог мне взглянуть на приложения с React иначе.
У React много проблем, это факт. Но есть одна, которая стала сейчас для меня очень отчетливой. Необычность этой проблемы в том, что она одновременно и его главный плюс. React — библиотека. Да, все так просто. React не фреймворк, а лишь библиотека для построения ui слоя вашего приложения. Только лишь одного слоя — UI.
В очень большом кол-ве проектов так много внимание уделено React, что разработчики начинают сливать в ui слой бизнес-логику и т. п. В итоге ui слой распухает, и ваши компоненты превращаются в неподдерживаемые груды кода.
Это большая и сложная проблема. Разбираться с ней я предлагаю по кусочкам. Сегодня хочется обратить ваше внимание на один из самых частых признаков, что вы замешиваете бизнес-логику в ui.
Скорее всего, у многих в проекте стоит линтер, скорее всего, у многих в правилах линта есть правило проверки зависимостей в хуках useEffect и подобных. А теперь обратите внимание на те места, где это правило замьючено. После анализа большого числа таких мест я пришел к следующему выводу — чаще всего такие мюты появляются в тех случаях, когда зависимостей слишком много(лишние срабатывания происходят и т. п.), а много их из-за того, что логика в эффекте избыточна, что именно в этом месте вы переборщили и занесли в ваш легкий ui лишнего. Конечно, есть исключения, но их, по моему мнению, сильно меньше. В большинстве же своем это именно проблемные места, которые если еще не болят, то скоро будут, т. к. такие эффекты крайне сложно поддерживать из-за обилия зависимостей, логики, большого кол-ва срабатываний и т. д., поэтому разработчики просто мьютят линтеры и замалчивают проблему.
Post #64
4.09K
- 🔥 76
- ❤ 6
- 👍 6
- 🌭 1
- 💯 1