Node-red学习第8篇--关于function节点的详细介绍

本文详细介绍了Node-red中Function节点的使用,包括编写功能代码、多输出发送、异步消息处理、记录事件、错误处理、数据存储(上下文)、状态显示以及利用其他模块和功能。Function节点允许运行JavaScript代码处理消息,支持创建新消息、发送多条消息、异步操作,并能与其他节点共享数据。
摘要由CSDN通过智能技术生成

Function节点允许JavaScript代码针对传入的消息运行,然后返回零个或者多个消息以继续流。

消息以一个称为msg的对象的形式进行传输。按照约定msg有一个属性msg.payload包含了消息的主体(也就是消息的具体内容)。

其他的节点可以把它们自己的属性附加到消息中,并且他们应该在自己的记录中被描述。

写一个功能(Writing a Function)

写进Function节点的代码代表了功能的主体。最简单的功能就是返回消息,比如下面这样:

return msg

如果功能返回的是null,那么将不会有消息在流中传递。

返回的消息对象不必要和一开始传输的对象一样,功能中可以构建一个完全全新的对象在返回消息对象之前。比如:

var newMsg = {payload:msg.payload.length};

return newMsg;

注:构建一个新的消息对象将失去任何一个已经接收到的消息的消息属性。这可能会破坏一些流,比如HTTP/Respone流需要msg.req和msg.res属性被保存到端到端。通常,Function节点应该返回已经传输的对它们的属性做了任何改变消息对象

发送给多个输出(Sending to multiple outputs)

编辑对话的功能允许输出的数量发生改变。如果不只有一个输出,通过发送给多个输出这个功能可以返回一个数组的信息。

这使得写一个取决于一些情况的发送信息给多个不同输出的功能很容易。比如,这个功能将发送任何基于主题banana给第二个输出而不是第一个。

If(msg.topic === ‘banana’){

       return [null,msg];

}else{

return [msg, null];

}

接下来的例子

好的,我会为你详细解读如何自定义 Node-RED 节点的示例。 首先,你需要准备一个 Node.js 环境和 Node-RED。然后,我们来看看如何创建一个简单的自定义节点。 1. 创建一个新的文件夹,命名为 "node-red-contrib-myfirstnode",并在其中创建一个名为 "myfirstnode.js" 的文件,这个文件将包含我们的自定义节点的代码。 2. 在 Node-RED 的安装目录下找到 "nodes" 文件夹,并将 "node-red-contrib-myfirstnode" 文件夹复制到该文件夹中。 3. 打开 "myfirstnode.js" 文件,开始编写自定义节点的代码。以下是一个简单的示例: ```javascript module.exports = function(RED) { function MyFirstNode(config) { RED.nodes.createNode(this,config); var node = this; node.on('input', function(msg) { //处理节点输入 node.send(msg); //将处理后的结果传递给下一个节点 }); } RED.nodes.registerType("myfirstnode",MyFirstNode); } ``` 4. 在代码中,我们使用 `module.exports` 导出我们的自定义节点函数。该函数接受一个参数 `RED`,它是一个全局变量,它允许我们访问 Node-RED 的 API。 5. 在函数中,我们定义了一个名为 `MyFirstNode` 的构造函数。这个构造函数接受一个参数 `config`,它是我们在 Node-RED 编辑器中配置节点时提供的配置数据。 6. 在构造函数中,我们使用 `RED.nodes.createNode` 方法来创建一个新的节点实例。我们还将 `this` 和 `config` 传递给此方法,这将设置节点的 `id` 和 `name` 属性,并将配置数据存储在 `config` 属性中。 7. 接下来,我们定义了一个名为 `node` 的变量,并在 `this` 上调用 `on` 方法来监听输入事件。当节点接收到输入消息时,我们可以在回调函数中处理它,并使用 `node.send` 方法将处理后的消息传递给下一个节点。 8. 最后,我们使用 `RED.nodes.registerType` 方法来注册我们的自定义节点类型。这个方法需要两个参数:节点类型的名称和我们定义的构造函数。在这个例子中,我们将节点类型命名为 "myfirstnode",并将构造函数传递给 `registerType` 方法。 9. 现在,我们可以启动 Node-RED 并在编辑器中找到我们的自定义节点。我们可以将它拖放到流程中,并配置它的参数,然后测试它是否按预期工作。 希望这个解读能够帮助你理解如何自定义 Node-RED 节点,并让你开始构建自己的节点。如果你有任何疑问,请随时问我。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值