Рубрики
Без рубрики

Логика в государственном управлении

Огуз Гелал Логика в государственном руководстве по стандартизации транзакционного государственного управления принесло предсказуемость перед началом развития. Затем с неизменностью и единственным источником истиной для государства приложения стали более ремонтом и надежными. Тем не менее, есть еще некоторая неоднозначность, окружающая то, что делать с бизнес-логикой. Я предлагаю модель, где

Автор оригинала: FreeCodeCamp Community Member.

Огуз Гелал

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

Я предлагаю модель, где Бизнес-логика работает под тем же каналом команд, что используют редукторы Отказ Управляющая логика с одинаковыми однонаправленными операциями приносит много преимуществ во время разработки. Я сначала прогуляю проблему более подробно. Затем я объясню, как эта модель работает над Reclare , библиотека, которая реализует эту модель. Наконец я буду обсуждать некоторые из этих преимуществ.

Вечная борьба с данными

В первые дни люди используются для создания пользовательских интерфейсов с простой HTML и CSS. Они обрабатывали манипуляцию DOM (модель объекта документов) с помощью JavaScript или jQuery. Тогда было разумно, то – предельные приложения были простыми, а не как управляемые с данными. Но тогда ответственность выросла в привлечение и обработку данных, а не только отображать его. Манипуляция Дома потеряла свою целесообразность.

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

Тогда современное государственное управление начало набирать место. Elm и Flux стандартизирован Событие Sourcing -пильское управление транзакционным государством в предельном развитии. Как и когда состояние может обновиться, было ограничено однонаправленными потоками данных. Это привело предсказуемость государству, облегчил следовать и разумную.

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

Это заставило меня путать столько, сколько запутало других. Я решил решить эту проблему и найти чистый способ обрабатывать бизнес-логику в моих приложениях. Затем я придумал идею объединения бизнес-логики вместе с редукторами. Это позволило логику работать вместе с редукторами под тем же каналом события.

Я понял, что этот подход принес больше, чем просто некоторые организационные льготы. Он привел к другим преимуществам, таким как предсказуемость и декларасивность в логике. Была необходима необходимость в библиотеке в логику Orchestrate вместе с государством и поддерживать все преимущества современного государственного управления. Это когда я решил создать Reclare Отказ

Краткое введение в Reclare

Reclare – это простая библиотека, которая вращается вокруг декларации и События Отказ Декларация – это простой объект, не имеющий взыскания. Это описывает ситуационное состояние Для этого, чтобы вызвать, а Что делать Если происходит его вызов. Это реакция может обновлять состояние, выполняя логику/побочные эффекты или оба. Вот что выглядит декларация:

Просмотр примера на jsfiddle

Это API общего назначения, и есть разные виды деклараций. Различные виды обращаются по-разному. В настоящее время есть два вида: декларации о событии и подписке.

Декларации событий Прослушайте канал события и подпишитесь на определенные события. трансляция Метод может быть использован для вещания событий на канал события. Первый параметр – это ключ события, за которым следует полезная нагрузка события. Эта полезная нагрузка передается на функции декларации.

broadcast("event_key", { bar: 'foo' })

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

Когда контекст RECLARE создается, все объявления объединяются своими на Ключи. Это уменьшает сложность нахождения деклараций на трансляцию до О (1) времени. Это также делает работу с декларациями очень естественными, так как можно иметь несколько объявлений с тем же ключом события. Вот пример:

Декларация жизненного цикла

Декларационный жизненный цикл начинается, когда срабатывают одно или несколько объявлений. Во-первых, все ситуационные функции всех деклараций, которые имеют вещательное событие на их на Ключ оценивается. Если удерживает ситуационное состояние, редукторы и реакции этой декларации получают очередь. Затем вставленные редукторы начинают выполнять.

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

Преимущества

Современные государственные библиотеки управления сосредоточены только на управлении состоянием приложения. Логика за кулисами – обычно упускается из виду Отказ Есть преимущества в эксплуатации государства и бизнес-логики вместе Отказ Предоставлено, должно быть разделение между двумя. Примеси и побочные эффекты логики должны быть поданы от управления государством. Но они функционально принадлежат друг другу, поэтому они должны сосуществовать и работать вместе.

Предсказуемая логика

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

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

Кодовая структура и фрагментация

Типичная интерфейсная кодовая база содержит много различных типов объектов. Например, типичный rect + redux + redux-saga кодовая база у контейнеров, компонентов, действий, редукторов, типов, селекторов, саги, услуги и другие в зависимости от выбора библиотек. Дэн Абрамов упоминается в его статье Возможно, вам не понадобится redux :

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

RecLare попытки сделать это испытание более приятнее с Декларации и Утка файлы .

Декларации являются связки, которые держат редукторов вместе с реакциями. Поскольку они выполняют на том же событии, они будут функционально актуальными.

Утки файлы ‘ Подход основан на Утки модульные redux по Эрик Расмуссен. Это предложение для расслоения разрушенных кусков redux вместе в виде изолированного модуля.

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

Модульность и декларативность

Reclare управляет как редукторами, так и реакциями вместе с операциями Uni-Nionional. Это позволяет создавать свою логику в декларативной и модульной природе. Я объясню простым сценарием входа в систему:

Компонент для входа в систему Component вещает login_submated с электронной почтой и паролем по отправке. Он также получает состояние загрузки в реквизитах, которые обрабатываются модулем запроса ниже.

Выше это модуль, который управляет процессом входа в систему. Первая декларация вызывается на login_submated. Если вход действителен. Это транслирует on_request событие с информацией о запросе. Обратите внимание, как вообще не волнует о обращении с запросами? Модуль заинтересован только в результате запросов типа входа в тип.

Следующие два объявления слушают request_success а также request_fail События. На этих событиях, если удерживает состояние типа запроса, они будут вызывать. Первый спасает пользователь в состояние и запускает изменение маршрута, а второй показан сообщение об ошибке.

Это пример модуля общего назначения, который обрабатывает запросы и загрузки состояний. Первая декларация вызывается на on_request мероприятие. После вызванного, он установит состояние загрузки для типа запроса, а затем запустить запрос. Затем на основании результата он будет транслироваться request_success или request_fail События. Это также будет транслировать request_reshed , что завершает состояние загрузки.

Из этого примера есть два взлета. Во-первых, как управляемая бизнес-логика. Большинство государственных библиотек по управлению, использующими неидередные потоки данных, позволят вам декларационально управлять государством. Но с ReCLare вы можете воспользоваться этим шаблоном для управления вашей бизнес-логикой.

Во-вторых – модульность. Каждая декларация и модуль представляет собой изолированную часть кода, который вызывается определенными событиями. Декларации получают полезную нагрузку и делают свою вещь: выполняет набор действий и/или обновляет состояние. Они не знают и не влияют на другие части кода.

Это поможет вам сохранить умственное отображение вашего кода, даже если он масштабируется. Это также приносит много преимуществ во время тестирования вашего кода.

Окончательные слова

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

Последнее: есть Официальное React Middleware построен сверху нового Контекст API . Когда я написал эту статью, RecLare был готов к использованию в реактивный проект. Он также может быть использован без промежуточного программного обеспечения на любом проекте JavaScript. Я посмотрю на создание Adminwares для других рамки ( Если кто-то не хочет этого сделать ?).

Что касается будущих планов, вот краткосрочный Дорожная карта :

  • Создание RecLare devtools для отладки
  • Я также буду искать интеграцию redux devtools
  • Документация и примеры
  • Руководящие принципы вклада
  • Типписная поддержка
  • Тесты и улучшения на React-ReClare
  • Возможность расширить объявление API
  • Редукторыdefault / РеакцияEdefault.

Вы также можете найти несколько примеров на репозиториях: Reclarehttps://github.com/reclarejs/reclare React – ReClarehttps://github.com/reclarejs/react-reclare

Оригинал: “https://www.freecodecamp.org/news/the-logic-in-state-management-2820d0353fed/”