Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.06.2021, 21:30
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

[React.js] Разные варианты хранилищ...
Когда начал читать и пробовать React.js, меня удивило количество всяких наворотов вокруг хранения, изменения и чтения состояния в приложениях...

Но ни одни навороты, на мой взгляд, никак не облегчают разработку ПО. Куча импортов... Функций...

Роутинг можно оставить, он не особо усложняет дело, благо с histiry вроде разобрались.

Пока вместо разного рода редьюсеров и т.п. наворотов, начал использовать обычные события. Их можно "синтезировать" в любом месте, любой функции. А слушателю доступно хранилище и он может его менять.
Добавим еще использование хуков и вроде все и так реализуемо.
Остается только получить данные из пропсов и все дела.

Или есть таки какой-то профит во всех этих наворотах?
Поделитесь опытом в разработке на React.js, может пригодится не только мне но и кому-то еще...
Ответить с цитированием
  #2 (permalink)  
Старый 23.06.2021, 12:09
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

Вот казалось бы, реакт тупо рендерер, и ничего проще чем ) document.getElementById('').append() - но тем не менее он весит аж 200кб, вывод: что-то не все просто.

Для тех, кто не очень в курсе:

https://pomb.us/build-your-own-react/

-
Насчет state management, есть глобальный стейт и локальный, (выяснил эмпирическим путем), с реактом дружу с 12 версии, поэтому я попробовал практически все что было

Redux - нормальное решение, можно его брать, существует давно, дев.тим постоянно что-то улучшает... сейчас уже есть RTK (redux toolkit). Простая установка. Подходит для глобального стэйта... были у меня как-то вопросы, те же дев.тим бодро в дискорде отвечали, от них же было утверждение, что для локального стэйта можно использовать Context, и useState... это пожалуй самый большой облом. Хотелось бы all-in-one. Порог вхождения - средний, в том плане, что нужно хорошо понимать javascript. Недавно вышел RTKQ (redux toolkit query) - интересно.

Apollo - это пожалуй самый приближенный вариант ) как должно быть... я про cache & invalidate, reactive vars, optimistic update, etc...

MobX - подкупает своей простотой... не прижился. Нет транспортного слоя, это про аналог RTKQ.

Recoil - пишут что официальная команда делает систему хранилища. Покрутил, повертел ну пока хз.

Context - слишком много ручной работы.

Все оно примерно одно и тоже, но только по другому. Что не возьми будут свои подводные камни и не так как хотелось бы )...

-
Насчет профита, ну прокачаешь свой скилл в понимании концепций, будешь легко разбираться в новых штуках. Программы сами не напишутся в какой-то момент понимаешь какой ты упоротый упырь, все знаешь, все понимаешь ) а живешь как бомжара... Надо было на манагера ) учиться... рукой водить, получать больше, в xsl ) галочки ставить... а не бороться со всякими IE6, es100500..

Не учись на программистов ) это сделает вас несчастными )

--
На счет событий + стор + хук = здесь есть один жирный недостаток, не получится сделать SSR ) без headless browsers

Последний раз редактировалось SuperZen, 23.06.2021 в 12:15.
Ответить с цитированием
  #3 (permalink)  
Старый 23.06.2021, 14:47
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от SuperZen
Надо было на манагера ) учиться... рукой водить, получать больше, в xsl ) галочки ставить... а не бороться со всякими IE6, es100500..
Тут на все 100% правильно!

Сообщение от SuperZen
Redux - нормальное решение, можно его брать, существует давно, дев.тим постоянно что-то улучшает...
Вот его и рассматривал более подробно.
Но пока не нашел ничего в нем "улучшающего" в сравнении с "моим" подходом через события.
Они пропсы не тянут до элемента, зато оберток накручивают будь здоров!
В моем случае ничего крутить не нужно, но пропсы прокидывать до конечного элемента придется.

Даже рассказать новичкам или другим не особо "продвинутым" сотрудникам, как работает тот или иной вариант достаточно проблематично.
С "моим" вариантом таких сложностей нет. Отследить пропсы по цепочке не сложно...
Ответить с цитированием
  #4 (permalink)  
Старый 23.06.2021, 14:47
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от SuperZen
На счет событий + стор + хук = здесь есть один жирный недостаток, не получится сделать SSR ) без headless browsers
Сейчас почитаю про это...
Ответить с цитированием
  #5 (permalink)  
Старый 23.06.2021, 14:52
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

SuperZen, ты про вот это?
Что такое [B]SSR[/B]. [B]SSR [/B]– (анг. аббревиатура от Server Side Rendering) это технология, которая позволяет, с помощью Node.js, запускать JavaScript код на сервере (а не в браузере как обычно) и готовый результат отправлять пользователю, избегая лишней нагрузки на его браузер и компьютер.

Так у меня все элементы рендарятся согласно стейту... Т.е. и тут я смогу все свои страницы запустить на Node.js и получить хтмл (согласно переданным пропсам).
Ведь мои события обеспечивают только "динамику" на самом сайте. А статику создать вообще нет проблем.
Т.ч. про это я думал... Но пока не использовал.
Ответить с цитированием
  #6 (permalink)  
Старый 24.06.2021, 09:45
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Сообщение от SuperZen
MobX - подкупает своей простотой... не прижился. Нет транспортного слоя
MobX - это просто библиотека реактивности. Соответственно может использоваться как стейт-манагер. Со своими задачами справляется шикарно, позволяет хорошо декомпозировать код, а благодаря точечности обновлений - хорошая оптимизация в Реакте.

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

В общем, я бы порекомендовал именно MobX
Ответить с цитированием
  #7 (permalink)  
Старый 24.06.2021, 10:00
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

MobX - это плохой vue/reactivity.(ну точнее наоборот, vue/reactivity - это MobX сделаный нормально)
То что вместо массивов юзается какая-то херня, которая требует плясок - это для меня абсолютный диал брикер.

Плюс когда я поизучал как склеивается MobX с, собственно, React, у меня в очередной раз заполыхал зад. React он, конечно, not opinionated, но и расширить его на самом деле нельзя. MobX туда засунут чисто через костыли.

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

А redux - это тупо надуманное решение надуманных проблем. Сами себе создали сложности, и сами героически оные решают, накручивая вся больше и больше мусора.
__________________
29375, 35

Последний раз редактировалось Aetae, 24.06.2021 в 10:02.
Ответить с цитированием
  #8 (permalink)  
Старый 24.06.2021, 10:09
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от Aetae
А redux - это тупо надуманное решение надуманных проблем. Сами себе создали сложности, и сами героически оные решают, накручивая вся больше и больше мусора.
Я соглашусь с этим. Поскольку не понял зачем они все так наворачивают и в чем от такого получают преимущество...
Ответить с цитированием
  #9 (permalink)  
Старый 24.06.2021, 10:28
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Сообщение от Aetae
MobX - это плохой vue/reactivity.(ну точнее наоборот, vue/reactivity - это MobX сделаный нормально)
То что вместо массивов юзается какая-то херня, которая требует плясок - это для меня абсолютный диал брикер.
какие там засады с массивом?

я знаю только одну - когда делаешь arr[i] = someValue, триггерятся подписчики на все элементы. Ну то есть использовать массив с примитивами или иммутабельными объектами - не очень.

Сообщение от Aetae
Плюс когда я поизучал как склеивается MobX с, собственно, React, у меня в очередной раз заполыхал зад. React он, конечно, not opinionated, но и расширить его на самом деле нельзя. MobX туда засунут чисто через костыли.
тут как хочешь склеивать, так и склеивается. Можно закинуть сторы в контекст и доставать их оттуда

const myStore = useMyStore()

потом этот myStore юзать или передавать в дочерние компоненты.

MobX - лишь механизм, не более того.

Сообщение от Aetae
Такой банальной, казалось бы, вещи как использование props совместно с computed для динамического локального состояния тоже получить невозможно без двойного рендера и кучи оверхеда.
можно пример?
Ответить с цитированием
  #10 (permalink)  
Старый 24.06.2021, 11:38
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Сообщение от ksa
Поскольку не понял зачем они все так наворачивают и в чем от такого получают преимущество...
ФП-шники любят такие конструкции ))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Opener разные домены AndreyS Events/DOM/Window 8 06.09.2012 11:24
Разные изображения - разные ссылки sunrec Общие вопросы Javascript 13 20.11.2011 22:00