Комментарии 19
В связи с этим у меня вопрос, в чем целесообразность использования Redux в наше время и зачем его применять в связке со Svelte? Ведь плюсы Redux-а в one-way-data-flow а сила Svelte в 2-way-binding.
Redux не совсем про x-way-binding, это стейт
Redux это не про реактивность. Это стейт мэнэджер с возможными сайд эффектами по типу саги. А реактивность организована ещё и в сторе свелт, где мы обновляем его при изменении в сторе редакса через subscription
Редакс можно интегрировать с тулами, управляющими сайдэффектами (с помощью мидлварь). Но в самом редаксе этого нет — он весь исключительно чистый и синхронный.
Вообще говоря, редакс не имеет отношения к классическому 2wb потому, что они с самого начала позиционировали себя как альтернативу этому безобразию. Тут данные могут ходить только в одном направлении.
Когда одни и те же данные могут приходить из разных источников, в распределенной системе (независимые компоненты на странице обладают большинством признаков такой модели) у читателей обычно наступает шизофрения — в один и тот же момент времени каждый может видеть что-то своё. Редакс предоставляет элегантный механизм для синхронизации, что даёт возможность читателям работать с ним, как единственным источником правды.
Основная проблема редакса в том, что разработчики назвали словом Action то, что должно называться Event (про это есть ишью на гитхабе, но менять уже было поздно). Поэтому народ, приученный к MVC и разным MVVM, пытается городить к нему какие-то невероятные кастыли для 2wb, вместо того чтобы пользоваться всеми преимуществами Event Sourcing и CQRS.
Redux можно рассматривать как винегрет из разных паттернов: Event Sourcing, CQRS, Single source of truth и даже подобие Dependency injection вместе с AOP. Довольно мощная штука, хоть и страшная как атомная война из-за странного нейминга и отсутствия консистентности в тулах.
// написали writable store для useDispatch, хотя можно было и без этого
// но для симметрии использования оставил так
export const useDispatch = writable(() => store.dispatch)
вот код здорового человека
export const dispatch = store.dispatch;
Ущербным я могу считать свой код, искренне зная, что там могут быть изъяны, а выражать такое мнение о технологии, которая давно принята сообществом и пользуется успехом — это действительно тяжёлый случай.
Хорошо. Завези MobX в свелт, напиши об этом статью, сбацай нпм пакет. Я уверен на вскидку конструкция будет афигенно большая с лишними инициализаторами. Я же могу использовать редакс или редакс тулкит с текущим кодом и будет более лаконичный слайс, который мне выдаст редюсер и экшены одновременно без огромной каши в коде
Да, я тоже что-то боюсь захейтить автора. Человек все же старался, но как человек написавший не мало уже на svelte, тоже не понял для чего эти все извращения и зачем здесь вообще аналогия redux, если можно было использовать чисто svelt и ничего больше. Но видимо автор знает тайный смысл в таких извращениях.
который имеет место быть
Да с чего вдруг то оно имеет место быть в контексте Svelte? Оно вообще ни каким боком тут не вперлось, это чистейшая ересь. У Svelte есть все для управления состоянием, и это всё намного лучше чем то, что дает Redux. Тем более сюда зачем это публиковать, вдруг кто-то ещё решит притащить Redux в Svelte после прочтения, это же будет вешалка для тех, кому это «детище» потом достанется. И так в мире фронта кол-во извращенцев достаточно высоко, зачем подначивать неопределившихся в эту степь.
Да и вообще товарищи извращенцы — ливайте из профессии пожалуйста =)
А как вы воспользуетесь полученной информацией — это уже ваше дело :)
В том то и проблема, что даже сегодня есть люди которые всё ещё берут Redux в связку с React'ом, что разумеется полный маразм, но всё же. Хотя полно информации и альтернатив, которые на голову выше.
Svelte + Redux + Redux-saga