Мне нравятся государственные менеджеры. Использую государственных менеджеров. Государственные менеджеры привыкли решать, скажем, 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.
Синхронность - это вездесущая реальность для тех, у кого есть глаза, чтобы видеть
- Карл Юнг
… Видеть, понимать и помнить…