Петр Трипольский @tripolskypetr
Frontend разработчик
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity
Specialization
Backend Developer, Frontend Developer
From 3,000 $
JavaScript
TypeScript
React
Angular
NestJS
MobX
Adaptive layout
CSS-IN-JS
SOLID
Qt
Много времени прошло, успел написать автогенерацию UML диаграмм из TypeScript кода в yaml, чтобы делать красивую документацию, асинхронные инъекции через dynamic import, локальные сторы для роутов module federation...
В организации есть несколько проектов, на примере react-pocketbase-crm можно посмотреть DI в действии
https://github.com/react-declarative/react-declarative
ServiceManager лежит в https://github.com/react-declarative/react-declarative/blob/567f20da6579a9499d3ac413e5f0605b80a774aa/src/helpers/serviceManager.ts
А компоненты обновил? А что уже было написано с поправкой на отсутствие batching не поломал? А точно нет сторонних модулей с мертвым автором?
https://youtube.com/shorts/eXwplb6mJGY
P.S. А джуна как онбордить 😊
Batching вроде починили, ранее он не работал после setTimeout. Соответственно, после внедрения любой фичи с debounce мог появиться плавающий баг
https://stackoverflow.com/questions/65426169/why-setstate-in-settimeout-not-batching
Думаю, на tanstack как раз можно реализовать такой конфиг)
Для табличек и списочных форм, да. Эта статья скорее для тех, кто пишет что-то вроде Visual Studio Code, этот редактор тоже сайт, который открывается в Electron
https://github.com/microsoft/vscode/tree/main/src/vs/editor/browser/services
Да, контексты из React позволяют реализовать DI, однако, при их композиции могут возникать трудности, связанные с тем, что порядок объявления описывается руками, а не вычисляется по требованию. См. вышеупомянутые
AuthService
иSessionService
Ещё один кейс. Думаю, каждый сталкивался с ролевой моделью. Если в случае с объектом
ioc
для переключения роли достаточно написать в консолиioc.roleModelService.setRoles(["admin"])
, то с контекстами придется патчить код или менять моки, что на большом проекте сложноMobx тратит меньше оперативной памяти, для мобилок критично, как по батарейке, так и по производительности, сборка мусора останавливает приложение
Через ioc достучаться до стейта приложения можно откуда угодно. В том числе из дебаггера, отладка проще
Сопровождение проще, так как не нужно описывать провайдеры (контексты) или boilerplate. После написания базовых сервисов, скорость разработки выше
Размер бандла изменится не сильно, тот же самый код всё равно придется где-то расписать, например, в action-creators, middlewares и reducers. Однако, с классами проще избежать копипасты, на проектах с уже плохим кодом размер бандла, если откатить время назад и взят Mobx+DI, мог бы быть меньше.
Овсянка, сер! Это для любителей, которые хотят сделать для React сервисы как в Angular2)