Обновить

Убийцы иммутабельной производительности — Zustand/Redux в связке с React

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели4K
Всего голосов 3: ↑2 и ↓1+1
Комментарии12

Комментарии 12

Иммутабельные паттерны разработки UI-приложений в последние годы стали одними из самых популярных

Я даже пошёл календарь перепроверить, не оказался ли я случайно в 2018. Иммутабельные паттерны разработки при том, что у нас уже много лет есть сигналы? `Immutable.js` в 2026? И я, конечно, догадывался, что Redux всё ещё где-то рядом с нами, но назвать его популярным?

В общем, статья вызывает большие вопросы о релевантности (и ностальгию!)

Можете скинуть количество скачиваний пакета ваших сигналов и, например, зустанда? Чтобы мы могли оценить насколько сегодня, в 2026 году, они популярнее. Ну и Redux заодно.

И что вы этим докажете? Что много легаси на редаксе работает? Ну так на jQuery 90% веба до сих пор крутится.

А вот предложение на включение в JS редакс точно не получал.

> И что вы этим докажете?

Вы просто не привыкли доказывать утверждения, а я привык. В случае с популярностью это доказывается именно так.

> Что много легаси на редаксе работает?

Так зустанд же не легаси, но вы почему то его не упоминаете. Понятно почему.

Или просто взять MobX и не мучаться ни с чем

Мучиться там придется еще больше на больших проектах, и при этом практически никто не будет понимать как он реально работает - фатальный недостаток.

Хелловорлды симпатичнее, да.

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

Мучиться там придется еще больше на больших проектах

Каким боком сам факт большого проекта(это мучения по дефолту) сопоставляется с тем, что именно MobX там камень преткновения?

при этом практически никто не будет понимать как он реально работает - фатальный недостаток.

Это намек на то, что на этом проекте первоклассники работают?

const obj = {
    _val: 1,
    set val(v) {
        console.log('value is set:', v);
        console.log('notify subscribers now');
        this._val = v;
    },
    get val() {
        console.log('value vas read (subscribe now)');
        return this._val;
    },
}

obj.val++;
let a = obj.val;

https://stackblitz.com/edit/typescript-of3ea5?file=index.ts

Уж лучше в сторону Rx или аналогов смотреть

Ну это вообще смешно, только если хочется максимально вырвиглазный wite only код, который потом нереально будет поддерживать.

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

Есть варианты и с Rx - сложно, но предсказуемо (не мой выбор), либо EventEmitter для простой мутабельности, либо оптимизации из статьи, решающие все реально встречающиеся проблемы на простых как топор иммутабельных сторах.

Но хотите пишите на нем, для меня это мусорная библиотека.

серьёзно ?) Rx будут больше понимать как работает, чем Mobx?)
В корне с вами не согласен, конечно все зависит от как пишется код на MobX ( если mst то да каша), а обычные классы, свойства, фукнции и в целом код приближенный к обычному JS - будет намного понятнее чем RxJS

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

А про классы у меня есть отличная статья, пора их уже наконец выкинуть из JS/TS.

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

В таком случае вы ошиблись в выборе ЯП, вам нужен Assembler чтобы вы напрямую процессорные инструкции писали, но и даже тут вы не будете понимать до конца что происходит, потому что вы не будете знать какие именно транзисторы и логические элементы будут под напряжением.

А про классы у меня есть отличная статья, пора их уже наконец выкинуть из JS/TS.

Классы это отличная вещь, если использовать по назначению, там где это удобно. JS/TS - мультипарадигменный язык, это не ФП или ООП и т.п. Пиши так, как удобно.

обмазанный проксями

А то, что код выполняется будучи обмазанным браузером, который обмазан тоннами кода, исполняющийся в операционной системе, которая обмазана тоже тоннами кода, который обмазан процессорными инструкциями, которые выполняются в связке с железом и т.п. Это нормально да? =)

Именно так я и представляю типичного адвоката mobx. Топит за то, что понимать код не надо, и что классы - это отличная вещь )

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации