Node-RED:Руководство пользователя/Базовые ноды: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Строка 89: Строка 89:
К примеру, в шаблоне...
К примеру, в шаблоне...


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
This is the payload: {{payload}} !
This is the payload: {{payload}} !
</syntaxhighlight>
</syntaxhighlight>
Строка 100: Строка 100:




<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
<ul>
<ul>
{{#payload}}
{{#payload}}
Строка 110: Строка 110:
...создаст [[HTML-список]] этих имен:
...создаст [[HTML-список]] этих имен:


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
<ul>
<ul>
   <li>Nick</li>
   <li>Nick</li>

Версия от 20:06, 23 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Черновик


Базовые ноды[1]

В этой статье мы расскажем о нодах Node-RED, являющихся базовыми строительными кирпичиками при создании потоков:

Документацию о каждой из этих нод можно посмотреть прямо в редакторе Node-RED. Для этого кликните по нужной ноде, а затем откройте вкладку «Info» в боковой панели.

Нода «Inject»

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

У сообщения, отправляемого нодой «Inject», можно задать свойства «payload» и «topic».

В свойстве «payload» можно задать много разных типов данных: строку (string), число (number), булево значение (boolean), JSON-объект (JSON) и т.д. Кроме того, здесь можно задать, в каком контексте будет использоваться это значение – контексте потока или глобальном контексте. Если выбрать пункт «timestamp», нода будет отправлять время в миллисекундах с 1 января 1970 года.

Нода «Debug»

Эту ноду можно использовать для просмотра отладочных сообщений на вкладке «Debug» боковой панели. В ней отладочные сообщения показываются в упорядоченном виде – чтобы пользователю было легче просматривать и изучать их содержимое.

Помимо самого сообщения, на вкладке «Debug» показывается время получения сообщения и то, какая именно нода «Debug» его отправила. Клик по ID ноды покажет эту ноду в рабочей области редактора Node-RED.

У ноды «Debug» также есть кнопка, с помощью которой можно включить/выключить отправку отладочных сообщений. Рекомендуем отключить или удалить все неиспользуемые ноды «Debug».

Ноду «Debug» также можно настроить на отправку всех сообщений в терминал (для этого поставьте галочку рядом с пунктом «system console» в меню редактирования ноды) и показ коротких (32 символа) сообщений в статусной строке прямо под нодой «Debug» (для этого поставьте галочку рядом с пунктом «node status (32 characters)»).

Более подробно об использовании вкладки «Debug» боковой панели читайте в этой статье.

Нода «Function»

В этой ноде можно задать JavaScript-код, который будет применяться к проходящим через нее сообщениям.

Полное руководство по использованию ноды «Function» читайте тут.

Нода «Change»

Эту ноду можно использовать, чтобы модифицировать свойства сообщения и задавать свойства контекста, не обращаясь для этого к ноде «Function».

Каждую ноду «Change» можно настроить на поочередное выполнение нескольких операций. Операции могут быть следующими:

  • «Set» – используется, чтобы задать значение свойства. Это значение может быть разных типов. Кроме того, оно может быть взято и из сообщения, и из свойства контекста
  • «Change» – используется, чтобы найти и заменить части свойства сообщения
  • «Move» – используется, чтобы переместить или переименовать свойство
  • «Delete» – используется, чтобы удалить свойство

Кроме того, задавая свойство, можно воспользоваться значение, являющееся результатом JSONata-выражения. JSONata – это декларативный язык запросов и преобразования для JSON-данных.

Нода «Switch»

Эта нода позволяет, используя набор правил, направлять сообщения по разным ветвям потока.

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

В ноде «Switch» используется 4 типа правил:

  • Правила для значений («value rules»), где значение сообщения сравнивается с заданным свойством
  • Правила для цепочек («sequence rules»), которые можно использовать для цепочек сообщений – вроде тех, что генерируются нодой «Split»
  • Правила для выражения JSONata («JSONata exp»), в котором это выражение можно сравнить с целым сообщением, и если они совпадают, то выражение вернет «true»
  • Правило «иначе» («otherwise»), с помощью которого можно проверить, прошло ли сообщение проверку через все предыдущие правила

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

Нода «Template»

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

Для генерирования текста эта нода использует шаблонизатор Mustache.

К примеру, в шаблоне...

This is the payload: {{payload}} !

Фрагмент «{{payload}}» будет заменен на значение из свойства «payload» сообщения.

По умолчанию Mustache заменяет некоторые символы на их управляющие HTML-коды. Чтобы этого не происходило, можно воспользоваться тройными фигурными скобками: «{{{payload}}}».

Mustache поддерживает простые циклы при работе со списками. К примеру, если в «msg.payload» будет содержаться массив имен вроде «["Nick", "Dave", "Claire"]», то шаблон ниже...


<ul>
{{#payload}}
  <li>{{.}}</li>
{{/payload}}
</ul>

...создаст HTML-список этих имен:

<ul>
  <li>Nick</li>
  <li>Dave</li>
  <li>Claire</li>
</ul>

Результатом работы ноды «Template» будет отформатированное сообщение или свойство контекста. Если шаблон сгенерирует корректные JSON- или YAML-данные, ноду «Template» можно настроить на разбор этих данных и сохранение в соответствующий JavaScript-объект.

См.также

Внешние ссылки