Интенсивное чтение "Low Code Logic Arrangement"

внешний интерфейс JavaScript
Интенсивное чтение "Low Code Logic Arrangement"

Логическая компоновка предназначена для визуального описания логики, которое используется для замены части описания логики в общих сценариях построения.

Еще одна логическая схема — это сочетание внешней и внутренней логики, которая обычно появляется на универсальных платформах paas.Сегодня мы представим инструмент paas, который полностью реализует логическую схему.node-red, содержанием интенсивного чтения на этой неделе является вступительное видео:How To Create Your First Flow In Node-RED, рассказывает о том, как реализовать приложение для запроса погоды с использованием чистой логической оркестровки, а также о развертывании и переносе приложений.

Обзор

Запустить Node-RED локально так же просто, как выполнить следующие две команды:

npm install -g --unsafe-perm node-red
node-red

Затем вы можете увидеть этот интерфейс оркестрации логики:

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

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

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

Функция каждого узла описана по очереди ниже.

Универсальный

Общие узлы обрабатывают общую логику, такую ​​как ручной ввод данных, отладка, перехват ошибок, комментарии и т. д.

inject

Введите узлы вручную. Некоторые входные данные могут периодически создаваться для использования следующим узлом.

Например, периодически могут генерироваться некоторые фиксированные значения, такие как этот объект:

return {
  payload: new Date(),
  topic: "abc",
};

Конечно, вот конфигурация с формой пользовательского интерфейса:

После этого идет потребление, которое может быть потреблено практически любым узлом позади, например, с помощьюchangenode для установки некоторых переменных среды или использованияtemplateКогда узел устанавливает шаблон html, вы можете получить введенные здесь переменные. Если в шаблоне переменная передается{{msg.payload}}Доступ, если это другие формы, вы можете даже напрямую перечислить выбор через раскрывающийся список.

Однако этот узел часто используется для установки статических переменных, а дополнительные данные поступают от других программ или пользователей, таких какhttp in, о чем пойдет речь позже. Фактически, с помощью этой комбинации мы можем заменить вход любого узла с производственного узла наinjectузел для достижения некоторых имитационных эффектов, в то время какinjectУзел также поддерживает настройку автоматического срабатывания по времени:

debug

Для отладки, когда любой выходной узел подключен к входу отладки, выходная информация будет напечатана на консоли для облегчения отладки.

Например, мы будемinjectвход подключен кdebuginput, вы можете увидеть результат печати в консоли после запуска данных:

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

complete

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

Вы можете слушать все узлы или визуально выбирать, какие узлы слушать:

catch

Узел захвата ошибок, вывод, когда какой-либо или указанный узел вызывает ошибки, формат вывода:

error.message 字符串
错误消息。

error.source.id 字符串
引发错误的节点的ID。

error.source.type 字符串
引发错误的节点的类型。

error.source.name 字符串
引发错误的节点的名称。(如果已设置)

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

status

Отслеживайте изменения состояния узла.

link in

только подключитьlink out.link in,link outКак и портал, он используется для организации узлов логической оркестровки, чтобы они выглядели простыми в обслуживании.

Например, в следующем примере в погодеhttp inПосле обслуживания перемежаются многие узлы логической обработки, некоторые из которых обрабатывают html-контент ответа.templateNode, также есть обработка запросов на запрос погоды в городе.http requestСервисы, хотя общая логика агрегирована, но более беспорядочна:

Лучший способ — классифицировать, то есть аналогично модульному поведению при разработке кода, экспортировать службу погоды и напрямую импортировать любые другие используемые модули.link inосуществленный,link out -> link inЭто просто преобразование пространственного положения, и значение передачи не изменится:

Таким образом, модуль выглядит намного понятнее.Если вы хотите узнать отношения подключения каждого «портала», просто щелкните один из них мышью, чтобы дать подсказку, что выглядит очень удобно:

link out

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

comment

примечание, соответствиеlinkПоследовательное использование может упростить обслуживание пользовательского интерфейса логической оркестровки.

В сочетании с примером исходного видео для службы погоды существует логика создания переменных среды и логика запроса.Запрос погоды также делится на запрос текущей погоды, 5 последовательных дней погоды и запрос страны. информации. Мы можем говорить о каждой логической группировке в пользовательском интерфейсе и использоватьcommentКомпоненты помечены комментариями для удобства чтения:

Функция

Функциональные узлы обычно используются для обработки бизнес-логики, поэтому они включают базовый if else, код js, обработку шаблонов и другие функциональные модули.

function

Самый основной функциональный модуль js, с ним можно делать что угодно:

Его ввод ведется наmsgобъект, который может быть изменен кодомmsgЗатем объект передается через выходной узел.

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

switch

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

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

change

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

Параметры доступаmsg.,flow.,global., после установки этих параметров, как и глобальные переменные, любую ноду можно использовать где угодно, что удобнее.

Например, приложение фиксирует некоторые URL-адреса и напрямую записывает строку строк в определенный URL-адрес.http inЭто не разумно в узле, потому что к нему можно получить доступ в следующем html или других узлах.После того, как вы измените его, влияние будет очень широким, поэтому лучше установить его как глобальную переменную и обращаться к ней по переменной в узел:

На самом деле в консоли вы можете увидеть значения этих трех переменных:

когда мы используемchangeПосле того, как нода назначена, вы можете просматривать значения глобальных переменных в разных областях видимости через панель отладки:

range

Отображение диапазона, которое отображает значения из одного диапазона в другой диапазон. На самом деле черезfunctionМодули также могут быть завершены, но специальный узел инкапсулирован, поскольку он используется чаще. Фактически, пользователи также могут самостоятельно инкапсулировать узлы.официальная документация.

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

template

Сгенерируйте строку или JSON по шаблону.

На самом деле, это также может бытьfunctionВместо этого, если он используется только для написания шаблонов, он будет выделен, что удобнее в обслуживании.

встроенныйmustacheсинтаксис шаблона, через{{}}способ использования переменных.

Например, мы проходимinjectввести переменную вtemplate, и пройтиdebugПечать, процесс такой:

вinjectОн настроен следующим образом:

Можно видеть, чтоmsg.nameустановить в строку, затем передатьtemplateдоступname:

delay

Отложенный обмен сообщениями, быстрый инструмент, может быть размещен между любым вводом и выводом, например, в приведенном выше примере.injectРезультат печатается через 5 секунд после срабатывания триггера, который можно настроить следующим образом:

trigger

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

Как видно из конфигурации, первый иinjectотправить сообщение, подобноеinjectто же), где "отправить второе сообщение на отдельный вывод" иswitchТакже будет еще один выходной порт.

Затем есть условие сброса, т.е.payloadПочему сбрасывается значение.

Из этого компонента видно, что фактически каждый узел можно использоватьfunctionРеализация узла, но, настроив узел, его можно настроить в пользовательском интерфейсе, а не в коде, что более удобно в использовании.

exec

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

Мы можем написать любую команду в конфигурации:

rbe

Узел сообщения об исключении (отчет по исключению), например, для блокировки при изменении ввода.

Интернет

Он используется для создания сетевых служб, таких как http, socket, tcp, udp и т. д. Поскольку другие обычно не используются, на этот раз будут представлены только службы http.

http in

Создайте службу http, которая может быть любым интерфейсом или веб-службой.

Когда вы устанавливаете метод наpost,Соединен сhttp responseБэкенд-интерфейс создан; если установлено значениеgetзапросить и подключитьtemplateНапишите шаблон html и подключитесь кhttp responseВеб-сервис создан.

Хотя сложно использовать фреймворк react или vue для создания веб-сервисов таким образом, пользовательские узлы по-прежнему создают возможность для этого, возможно, действительно возможно определить интерфейсные модульные файлы как узлы, объединенные друг с другом.

http response

http возврат, только стыковкаhttp inвыход, всегда сhttp inИспользуйте в парах.

если только используетсяhttp inНо безрезультатноhttp response, это эквивалентно обработку запроса в заднем коде, но не вызывает что-то вроде:

res.send("hello word");

для отправки контента клиенту.

http request

а такжеhttp inСоздание http-сервиса отличается,http requestОтправьте сетевой запрос напрямую и импортируйте возвращаемое значение в выходной узел.

Использован пример получения погоды в видеоhttp requestИнициировать запрос на получение информации о погоде:

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

последовательность

Последовательности — это узлы, обрабатывающие массивы.

split

соответствующий кодуsplit, превращает строку в массив.

join

соответствующий кодуjoin, вообще сsplitПри совместном использовании удобно обрабатывать строки.

sort

Соответствующий кодsort, только согласноkeyВыполнять простую обработку по возрастанию и убыванию, что удобно для простых сценариев, но также может использоваться для сложных сценариев.functionузел вместо этого.

batch

После получения входных потоков партиями они упаковываются в соответствии с количеством, а затем выводятся равномерно, что равносильно пакетной упаковке, и могут быть сгруппированы по количеству или временному интервалу:

Разобрать

Легко понять, что специальная обработка данных в указанном выше формате и вывод по характеристикам данных, например данные csv, могут быть выведены в виде одного сообщения на строку, либо упакованы в виде большого массива и выведены как одно сообщение.

Конечно, это также может бытьfunctionУзлы заменяются, затем можно настроить как метод синтаксического анализа, так и метод вывода.

место хранения

Постоянное хранилище, обычно хранящееся в виде файла.

file

На выходе файл.

file in

Принимает файл в качестве входных данных и результат файла в качестве выходных данных.

watch

Следите за изменениями в каталоге или файле.

интенсивное чтение

После прочтения приведенной выше функции node-red, я полагаю, вы уже имеете более систематическое представление о логической организации.

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

Логическая компоновка имеет и естественный недостаток, т. е. когда все узлы вырождаются вfunctionПосле узла будет две проблемы:

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

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

Суммировать

Оркестровка логики — это крайность, то есть использование пользовательского интерфейса для описания общей бизнес-логики, что снижает порог для начала работы непрофессиональных разработчиков. через паруnode-redМожно обнаружить, что относительно полная система логической оркестровки все еще может принести пользу.

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

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

Адрес обсуждения:Интенсивное чтение «Логическая организация с низким кодом», выпуск № 319 dt-fe / еженедельно

Если вы хотите принять участие в обсуждении, пожалуйста,кликните сюда, с новыми темами каждую неделю, выходящими по выходным или понедельникам. Интерфейс интенсивного чтения — поможет вам отфильтровать надежный контент.

Сфокусируйся наАккаунт WeChat для интенсивного чтения в интерфейсе

Заявление об авторских правах: Бесплатная перепечатка - некоммерческая - не производная - сохранить авторство (Лицензия Creative Commons 3.0)