Learning Node-RED 3.Node-RED的编程模型

本节主要介绍Node-RED平台的关键概念和一些关键组件,并通过具体实例说明Node-RED的编程模型。

  • 数据流程(flow),flow是Node-RED中最重要的概念,一个flow流程就是一个Node-RED程序,它是由多个节点相互连接在一起形成数据通信的集合。在Node-RED的底层实现,一个flow流程通常是由一系列的JavaScript对象和若干个节点的配置信息组成,通过底层的Node.js环境再去执行Java Script代码。
  • 节点(node),它是构建flow的最基本元素,也是真正进行数据通信处理的载体。当程序员编写好的flow流程运行起来的时候,节点的功能就是对从上游节点接收到的消息(简称message)进行逻辑处理,并返回新的消息结果传递给下游节点实现后续的工作。一个Node-RED的节点包括一个.js文件和一个.html文件,分别完成对节点逻辑功能的实现和节点的样式设计。

  • 消息(message),它是节点之间进行数据传输的对象,也是数据的载体。理论上消息是一个JavaScript对象,它包含了对数据描述的所有属性。消息是Node-RED处理数据的最基本的数据结构,只有当节点被激活时消息才被处理,再加上所有节点都是相互独立的,这就保证了数据流程是互不影响并且是无状态的。

  • 连线(wire),它是构建数据流程和节点与节点的通信连接桥梁,wire是将节点的输出端点连接到下一个节点的输入端,这就表示通过一个节点生成的消息应该交给下一个连接节点来处理。

Node-RED的编辑环境

Learning Node-RED 3.Node-RED的编程模型_第1张图片

命令行中输入node-red即可开启服务器,在浏览器中输入http://127.0.0.1:1880/进入Node-RED编辑环境,如上图所示。

其中左侧是各个节点,中间是Node-RED流程,右侧包含了每个节点的信息、调试窗口、dashboard是面板设计。


一个简单的流程

我们将实现一个每3秒产生随机数的流程。

1.首先在左侧【输入】类型中拖出inject节点,可以观察到它的功能是“时间戳”,也可以理解为“触发器”。双击该节点,在编辑框中输入参数。

Learning Node-RED 3.Node-RED的编程模型_第2张图片

2.从左侧【功能】类型中拖出random节点,双击输入参数。其中From是下限,To是上限,代表随机数的范围。

Learning Node-RED 3.Node-RED的编程模型_第3张图片

3.从左侧【输出】类型中拖出debug节点。

4.将这3个节点用线连接起来,如图。


点击右上方部署按钮,再点击调试窗口,可以观察到产生的随机数。

Learning Node-RED 3.Node-RED的编程模型_第4张图片

这里仅仅是为了说明Node-RED的编程模型,因此并没有实现复杂的数据处理逻辑。

Node-RED的项目结构

安装Node-RED的路径在C:\Users\用户名\AppData\Roaming\npm\node_modules\node-red,目录结构如图。

Learning Node-RED 3.Node-RED的编程模型_第5张图片

  • /public目录下是关于Node-RED平台本身的静态文件,例如资源文件、css样式文件和前端页面的html文件;
  • /node-modules目录下是一些外部依赖库,是Node-RED需要的一些Node.js 模块;
  • /red目录下面就是实际的Node-RED代码,包括一些核心API接口、事件驱动程序、服务器端程序、系统设计程序和Node-RED的入口程序等;
  • /test目录下面主要存放了一些用于测试的node节点和flow流程;
  • /nodes目录非常重要,Node-RED平台中所有的节点都将存放在这个目录下,包括各个节点的html文件和js文件;
  • settings.js文件是整个Node-RED的系统配置文件,settings.js文件描述了Node-RED启动的参数细节、端口号和IP地址设置以及各个启动目录的设置。

总结

Node-RED允许开发者直接通过Web客户端就可以实现各种数据流程的编码,还能实现对程序逻辑的编写,Node-RED将这些数据流程称为flow。利用Node-RED编程十分方便,只需要在它提供的编辑区域内,通过拖拽Node-RED的内置节点或者已经安装成功并部署的节点(node)到workspace中并用连接线(Node-RED中称为wire)把这些节点连接起来,就能实现数据流的编程。最后,程序员点击右上方的‘部署(Deploy)’按钮,程序流程便会一键保存并执行。

你可能感兴趣的:(----Node-RED)