2023年7月7日发(作者:)
详解Node-RED中的三个⽂件(js,html,json)详解Node-RED中的三个⽂件(js,html,json)Node-RED是⼀种基于流的编程⼯具,其基于流的程序设计是由J. Paul Morrison在20世纪70年代发明的,它将应⽤程序的⾏为描述为⽹络⿊匣⼦(Node-RED中称为“节点”)。其中每个节点都有⼀个定义明确的⽬的;它被赋予⼀些数据,完成对数据的处理之后传递数据。⽹络负责节点之间的数据流。它是⼀种⾮常适合于可视化表⽰的模型,并使其更容易为更⼴泛的⽤户所访问。如果有⼈可以将⼀个问题分解成离散的步骤,他们可以查看⼀个流并了解它正在做什么,⽽不必理解每个节点中的代码⾏。Node-RED是由基于的运⾏环境组成,您可以将Web浏览器指向该运⾏时来访问流编辑器。在浏览器中,您可以通过将节点从调⾊板拖到⼯作区中并将它们连接在⼀起,以开始创建应⽤程序。只需单击⼀次,即可将应⽤程序部署回运⾏它的运⾏环境。可以通过安装社区创建的新节点轻松地扩展节点的调⾊板,您创建的流可以轻松地作为JSON⽂件共享。Node-RED中的三个⽂件在Node-RED中当流被部署时,节点被创建,它们可能在流运⾏时发送和接收⼀些消息,并且在部署下⼀个流时被删除。其中的节点由两个⽂件组成:JavaScript⽂件和html⽂件JavaScript⽂件定义了节点的功能html⽂件定义了节点的属性和外观(编辑对话框和帮助⽂本)通常来讲,在节点的⽬录下还需⼀个⽂件⽤于将所有⽂件打包成NPM模块,⽤以在Node-RED中安装、运⾏。ript⽂件JavaScript⽂件定义节点运⾏时的⾏为。节点构造函数接收讯息发送消息多输出多条消息关闭节点超时⾏为测井事件处理错误设置状态⾃定义节点设置1.1 节点构造函数节点由可⽤于创建节点新实例的构造函数定义。该函数注册在运⾏环境中,以便在流中部署相应类型的节点时调⽤该函数。函数被传递给⼀个对象,该对象包含在流编辑器中设置的属性。它必须做的第⼀件事是调⽤Node函数初始化所有节点共享的功能。之后,特定于节点的代码就会存活。function SampleNode(config) { Node(this,config); //
此处添加特定于节点的代码}erType("sample",SampleNode);1.2 接收讯息节点在input事件从流中的上游节点接收消息。('input', function(msg, send, done) { //
处理'msg' //
⼀经完成,调⽤'done'. //
此调⽤被包装在⼀个存在于'done'的检查中 This call is wrapped in a check that 'done' exists if (done) { done(); }});1.3 发送消息如果节点位于流的开头,并响应外部事件⽣成消息,则应使⽤send函数在Node对象上:var msg = { payload:"hi" }(msg);如果节点希望从内部发送input事件侦听器,为了响应收到消息,它应该使⽤send传递给侦听器函数的函数:let node = this;('input', function(msg, send, done) { //
为了实现最⼤的向后兼容性,请检查发送是否存在。 send = send || function() { (node,arguments) } d = "hi"; send(msg); if (done) { done(); }});如果msg为NULL,不发送任何消息。如果节点发送消息是为了响应接收到的消息,那么它应该重⽤接收到的消息,⽽不是创建⼀个新的消息对象。这将确保为流的其余部分保留消息上的现有属性。多输出如果节点有多个输出,则可以将消息数组传递给send,并将每个输出发送到相应的输出。([ msg1 , msg2 ]);多条消息通过在此数组中传递消息数组,可以向特定输出发送多个消息:([ [msgA1 , msgA2 , msgA3] , msg2 ]);关闭节点每当部署新流时,都会删除现有节点。如果它们中的任何⼀个在发⽣这种情况时需要清理状态,例如断开与远程系统的连接,则应该在close事件。('close', function() { //
清理任何⼯作});如果节点需要执⾏任何异步⼯作来完成清理⼯作,则注册的侦听器应该接受⼀个参数,该参数是所有⼯作完成时要调⽤的函数。('close', function(done) { doSomethingWithACallback(function() { done(); });});1.4 测井事件如果节点需要将某些内容记录到控制台,它可以使⽤以下函数之⼀:("Something happened");("Something happened you should know about");("Oh no, something bad happened");// Since Node-RED ("Log some internal detail not needed for normal operation");("Log something more details for debugging the node's behaviour");这个warn和error消息也被发送到Flow编辑器调试选项卡。1.5 设置状态在运⾏时,节点能够与编辑器UI共享状态信息。这是通过status职能`:({fill:"red",shape:"ring",text:"disconnected"});1.6 ⾃定义节点设置节点可能希望在⽤户的配置选项中公开档案。任何设置的名称必须遵循以下要求:名称必须以相应的节点类型作为前缀。设置必须使⽤骆驼-案例-见下⾯的更多信息。节点不能要求⽤户设置它–它应该有⼀个合理的默认设置。例如,如果节点类型sample-node想公开⼀个名为colour,设置名称应为sampleNodeColour.在运⾏时中,节点可以将设置引⽤为NodeColour.1.7 向编辑器公开设置在某些情况下,节点可能希望将设置的值公开给编辑器。如果是这样的话,节点必须将该设置注册为其调⽤的⼀部分。registerType:erType("sample",SampleNode, { settings: { sampleNodeColour: { value: "red", exportable: true } }});value字段指定设置应采⽤的默认值。exportable告诉运⾏库使编辑器可以使⽤该设置。与运⾏时⼀样,节点可以将设置引⽤为NodeColour在编辑⾥⾯。如果节点试图注册不符合命名要求的设置,则会记录错误。⽂件节点.html⽂件定义节点在编辑器中的显⽰⽅式。它包含三个不同的部分,每个部分都包裹在⾃⼰的内部。2.2 节点类型整个编辑器都使⽤节点类型来标识节点。它必须与调⽤erType在相应的.js档案。该类型还⽤作调⾊板中节点的标签。如果类型以“in”或“out”结尾,则去掉标签。例如,“MQTT in”和“MQTT Out”节点都被标记为“MQTT”,输⼊和输出端⼝的显⽰提供“in”或“out”上下⽂。2.3 节点定义节点定义包含编辑器所需的有关节点的所有信息。它是⼀个具有以下属性的对象:category:(字符串)节点出现的调⾊板类别defaults:(对象)可编辑属性为节点。credentials:(对象)凭证性质为节点。inputs:(数字)节点有多少输⼊0或s:(数字)节点有多少输出。可以0或者更多。color:(字符串)背景颜⾊利⽤。paletteLabel:(字符串|函数)标签在调⾊板上使⽤。label:(字符串|函数)标签若要在⼯作区中使⽤,请执⾏以下操作。labelStyle:(字符串|函数)风格适⽤于标签。inputLabels:(String|函数)可选标签若要将悬停添加到节点的输⼊端⼝,请执⾏以下操作。outputLabels(String|函数)可选标签若要将悬停添加到节点的输出端⼝,请执⾏以下操作。icon:(字符串)图标利⽤。align:(字符串)对齐图标和标签。button:(对象)添加扣⼦到节点的边缘。oneditprepare:(函数)在构建编辑对话框时调⽤。看见⾃定义编辑⾏为.oneditsave:(函数)在编辑对话框被选中时调⽤。看见⾃定义编辑⾏为.oneditcancel:(函数)在取消编辑对话框时调⽤。看见⾃定义编辑⾏为.oneditdelete:(函数)当按下配置节点编辑对话框中的DELETE按钮时调⽤。看见⾃定义编辑⾏为.oneditresize:(函数)在调整编辑对话框的⼤⼩时调⽤。看见⾃定义编辑⾏为.onpaletteadd:(函数)当节点类型添加到调⾊板时调⽤。onpaletteremove:(函数)当节点类型从调⾊板中移除时调⽤。2.4 编辑对话框节点的编辑模板描述其编辑对话框的内容。2.5 帮助⽂本当节点被选中时,它的帮助⽂本将显⽰在info选项卡中。这应该为节点的⼯作提供⼀个有意义的描述。它应该确定它在传出消息上设置了哪些属性,以及可以在传⼊消息上设置哪些属性。第⼀章的内容
当在调⾊板中的节点上悬停时,标记被⽤作⼯具提⽰。⽂件节点可以打包为模块并发布到NPM存储库。这使得它们与它们可能具有的任何依赖项⼀起安装起来⾮常容易。除了通常的条⽬外,⽂件还必须包含⼀个node-red条⽬,该条⽬列出了包含要加载的运⾏时节点的.js⽂件。如果单个⽂件中有多个节点,则只需列出⼀次⽂件。如果任何节点具有对其他NPM模块的依赖关系,则它们必须包含在dependencies属性中。为了帮助在NPM存储库中发现节点,⽂件应该在其keywords属性中包含node-red。这将确保在按关键字搜索时显⽰包。{ "name" : "node-red-contrib-samplenode", "version" : "0.0.1", "description" : "A sample node for node-red", "dependencies": { }, "keywords": [ "node-red" ], "node-red" : { "nodes": { "sample": "sample/" } }}
发布者:admin,转转请注明出处:http://www.yc00.com/web/1688683653a162225.html
评论列表(0条)