Мне нравятся государственные менеджеры. Использую государственных менеджеров. Государственные менеджеры привыкли решать, скажем, 5 задач. Здесь я покажу вам альтернативу, которая решает только 1 из 5 проблем, которые решают руководители штата.

Таким образом, это не то, что может заменить Redux, Vuex и т. Д. Это просто старый способ поддерживать синхронизацию переменных между различными компонентами без отправки значений через большой ад. Только то.

Если вам нужен State Manager с промежуточным программным обеспечением, мемоизацией и т. Д., Это не для вас.

Будьте осторожны, вы можете ХОТИТЬ государственного менеджера со всеми этими йербами, но вам это может не НУЖНО. Уделяйте этому двойное внимание.

Кодирование - это не цель, это средство

Когда я работаю, мои самые важные шаблоны / принципы:

  • ЦЕЛОВАТЬ
  • Принцип Парето
  • Компонент все дела!
  • Слабая связь

Эта библиотека State Manager была создана в основном с учетом принципа Парето и шаблона KISS. Итак, что это значит?

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

Это и хорошо, и плохо одновременно. Я просто написал то, что считаю хорошим, а теперь напишу то, что считаю плохим: эта библиотека не соответствует текущим ~ шумихам ~ хорошей практике, например: Это не декларативно , это не функциональное программирование (по крайней мере, в первой версии) и другие вещи, которые, я уверен, вы найдете (люди любят находить плохие вещи).

Есть еще одна важная вещь, и я считаю, что она самая важная:

Я считаю, что если вы добавили State Manager в 10 проектов, вы можете добавить его 8 раз, чтобы решить одну проблему: «Поддерживайте синхронизацию пары варов между компонентами».

Вам нужен был только глобальный объект состояния и пара обратных вызовов, но вы добавили, скажем, Redux ... Сложность, много сложностей, друг мой.

Идея duix состоит в том, чтобы охватить те 8 раз, когда вы добавляли диспетчер состояний только потому, что вам нужно было поддерживать переменные синхронизации между компонентами. Только то. Существует глобальный state объект, который вы set значения или get значения, и вы можете subscribe или unsubscribe, и каждый раз, когда кто-то set новое значение, все подписчики будут вызываться, получая новое и старое значение.

^ Это, друг мой, принцип Парето. Парето говорит, что 20% X генерируют 80% Y. В этом случае мы можем сказать, что если вы добавили State Manager в свой проект, в 80% случаев вы добавляли его только для решения нескольких (или только одной) проблем: поддерживать синхронизацию переменных между компонентами. А оставшиеся 20% времени уходили не только на «синхронизацию переменных».

Итак, подведем итог: вы чрезмерно убиваете. Вы добавляете библиотеку, созданную для решения множества проблем, и используете ее только для решения одной из них. Он помнит мне время jQuery, когда мы несколько раз добавляли jQuery только для того, чтобы использовать $ в качестве селектора элемента DOM. Или добавить всю Moment библиотеку, чтобы сказать «Несколько мгновений назад», когда что-то происходит менее чем за 2 секунды (это можно заменить на: if ((Date.now() — initialMoment) < 2000) {)

Это просто, и хотелось бы, чтобы вещи оставались простыми.

Эта библиотека называется duix, и в основном это библиотека с тремя функциями:

  • duix.set
  • duix.get
  • duix.subscribe

Если вы, читая эти 3 статьи, понимаете, как эта библиотека будет работать, это потому, что я достиг своей цели.

Как работает DUIX

  • Вы можете использовать duix.set для установки пары "ключ-значение", например:
  • Вы можете использовать duix.get, чтобы получить значение пары, например:
  • Вы можете использовать duix.subscribe для подписки на callback, который будет вызываться каждый раз при изменении значения, например:

Важно знать, что функция duix.subscribe возвращает функцию unsubscribe, например:

И… это все.

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

Как это использовать

Вы знаете, как им пользоваться. Просто проверьте библиотеку duix на NPM и Github.





Синхронность - это вездесущая реальность для тех, у кого есть глаза, чтобы видеть

- Карл Юнг

… Видеть, понимать и помнить…