本教程介绍了 Node-RED 编辑器,并创建了一个演示注入、调试和函数节点的流程。
运行 Node-RED 后,在 Web 浏览器中打开编辑器。
如果你在同一台运行 Node-RED 的计算机上使用浏览器,你可以通过 url 访问它: http://localhost:1880。
如果在另一台计算机上使用浏览器,则需要使用运行的计算机的 ip 地址 Node-RED: http://<ip-address>:1880
。
通过单击节点上的按钮或设置注入之间的时间间隔,可以将消息注入到流中。
将其中一个从调色板(palette)拖到工作区(workspace)上。
选择新添加的 注入(Inject) 节点,可以在信息侧边栏(Information sidebar)窗格中查看有关其属性的信息以及关于它的操作的说明。
“调试(debug)”节点可以做到在调试窗口侧边栏中显示任何消息。默认情况下,它只显示消息的有效负载,但也可以显示整个消息对象。
通过在一个节点的输出端口与另一个节点的输入端口之间拖动,将 Inject 节点和 Debug 节点连接在一起。
此时,节点只存在于编辑器中,必须部署到服务器。
单击 Deploy 按钮。
选中调试窗口侧边栏选项卡后,单击注入按钮(Inject节点旁边的小正方形按钮)。您应该会看到数字出现在侧边栏中。默认情况下,Inject 节点使用自 1970 年 1 月 1 日以来的毫秒数作为其有效负载。
函数节点允许您通过 JavaScript 函数传递每条消息。
删除现有的连接(选择它并在键盘上按删除键)。
在 Inject 和 Debug 节点之间连接 Function 节点。
双击 Function 节点,打开编辑对话框。将下面的代码复制到“函数”字段中:
单击“完成(Done)”关闭编辑对话框,然后单击“部署(deploy)”按钮。
现在,当您单击注入按钮时,侧边栏中的消息将被格式化为可读的时间戳。
此流程演示了创建流程的基本概念。它显示了如何使用 Inject 节点手动触发流,以及 Debug 节点如何在侧栏中显示消息。
它还展示了如何使用函数节点来编写针对消息运行的自定义 JavaScript。
本教程中创建的流程由以下 json 表示。要将其导入到编辑器中,请将其复制到剪贴板,然后将其粘贴到 导入(Import) 对话框中。
[{"id":"58ffae9d.a7005","type":"debug","name":"","active":true,"complete":false,"x":640,"y":200,"wires":[]},{"id":"17626462.e89d9c","type":"inject","name":"","topic":"","payload":"","repeat":"","once":false,"x":240,"y":200,"wires":[["2921667d.d6de9a"]]},{"id":"2921667d.d6de9a","type":"function","name":"Format timestamp","func":"// Create a Date object from the payload\nvar date = new Date(msg.payload);\n// Change the payload to be a formatted Date string\nmsg.payload = date.toString();\n// Return the message so it can be sent on\nreturn msg;","outputs":1,"x":440,"y":200,"wires":[["58ffae9d.a7005"]]}]
Node-RED: Low-code programming for event-driven applications.
Copyright OpenJS Foundation and Node-RED contributors. All rights reserved. The OpenJS Foundation has registered trademarks and uses trademarks. For a list of trademarks of the OpenJS Foundation, please see our Trademark Policy and Trademark List. Trademarks and logos not indicated on the list of OpenJS Foundation trademarks are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.
The OpenJS Foundation | Terms of Use | Privacy Policy | OpenJS Foundation Bylaws | Trademark Policy | Trademark List | Cookie Policy