Стили разработки узлов n8n

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

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

Сравнение декларативного и программного стиля

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

Программный стиль - он более сложный, более гибкий. То есть в нём мы с вами можем прописать некую программную логику на языке JavaScript, которая будет соответственно выполняться во время выполнения нашего узла.

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

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

В отличие от декларативного стиля, в программном стиле у нас присутствует специальный метод, который называется execute. Этот метод будет выполняться у нас в тот момент, когда будет запускаться наш узел. Соответственно, здесь в этом методе мы принимаем данные, каким-то образом их модифицируем, обрабатываем и так далее, и выдаём некий респонс, возвращаем какой-то ответ.

В декларативном стиле этого нет, у нас это всё скрыто. Как вы видите, здесь написано "no execute method needed", то есть не нужен метод execute. Почему? Потому что у нас используется так называемый роутинг, то есть это роуты, благодаря которым мы с вами можем настраивать нашу логику. Здесь прописываются базовые какие-то запросы, что на выходе, что на входе будет, и соответственно вот таким образом у нас это всё настраивается.

Вот так мы можем с вами бегло сказать по поводу двух стилей написания кода. Поэтому, когда вы будете встречаться с какими-то кастомными узлами, вы можете посмотреть на этот синтаксис, и если вы увидите метод execute, то соответственно вы имеете дело с программным стилем написания кода. Если этого метода нет и используется роутинг, то соответственно вы имеете дело с декларативным способом написания кода узла.