node-red中创建自定义节点 JavaScript 文件API编写详解

무료무료 기술 자료

이 글은 바로 읽을 수 있으며 기초 학습과 검색 유입에 적합합니다.

node-red中创建自定义节点 JavaScript 文件API编写详解

前言

在node-red中如果你没有找到自己需要的节点时,那么你可以自定义一个节点来满足自己的需求。之前的글中,我有简单介绍过如何创建一个节点,并以转换大小写来举例。例子虽然简单,但可以让大家了解创建自定义节点的步骤以及一个节点的组成部分。那么本篇将会聚焦在自定义节点的js文件中。详细讲解其中的api,及其他설정项。通过之前的글我们知道,节点的js文件是一个节点的核心文件,用于收取설정매개변수,处理业务逻辑,并向下游보내기데이터。下面让我们一起看看吧。

自定义节点JavaScript 文件

节点构建器

所有的节点都是由一个构建器来生成的函数,是创建的一个新的实例。这个函数被회원가입到运行时中,
这个函数通过设置一个설정对象来存在于流편집器中。
在该函数中,第一件事就是调用RED.nodes.createNode函数,来시퀀스化特性,被其他节点共享。在这之后

就可以编写业务代码啦。
如下

接受信息

节点通过회원가입一个input事件来接受上游节点下发的信息在整个流中。회원가입事件时,在事件的回调函数里,会有msg和send两个매개변수,msg就是上游传递过来的데이터。send是要下发到下游的一个函数。第三个函数 done 是节点完成业务逻辑处理后调用的函数。
예제

function SampleNode(config) {
    RED.nodes.createNode(this,config);
    // node-specific code goes here

}

RED.nodes.registerType("sample",SampleNode);

接受信息

节点通过회원가입一个input事件来接受上游节点下发的信息在整个流中。회원가입事件时,在事件的回调函数里,会有msg和send两个매개변수,msg就是上游传递过来的데이터。send是要下发到下游的一个函数。第三个函数 done 是节点完成业务逻辑处理后调用的函数。
예제

this.on('input', function(msg, send, done) {
    // do something with 'msg'

    // Once finished, call 'done'.
    // This call is wrapped in a check that 'done' exists
    // so the node will work in earlier versions of Node-RED (<1.0)
    if (done) {
        done();
    }
});

下发信息

在自定义节点中向下游보내기信息非常的简单
只需要使用send函数即可,如下

var msg = { payload:"hi" }
this.send(msg);

如果节点想要在input事件中向下游보내기信息,可以这样做

let node = this;
this.on('input', function(msg, send, done) {
    // For maximum backwards compatibility, check that send exists.
    // If this node is installed in Node-RED 0.x, it will need to
    // fallback to using `node.send`
    send = send || function() { node.send.apply(node,arguments) }

    msg.payload = "hi";
    send(msg);

    if (done) {
        done();
    }
});

在input事件的回调函数中,有三个매개변수,第一个是接受到的信息,第二个是send函数,
第三个是done函数。分别有不同的使用시나리오。

如果要向下游입력多个매개변수可以这样写

this.send([ msg1 , msg2 ]);

this.send([ [msgA1 , msgA2 , msgA3] , msg2 ]);

日记事件

在自定义节点中打印로그,只需在this下调用log,warn等方法即可。로그会在控制台中打印出来。

this.log("Something happened");
this.warn("Something happened you should know about");
this.error("Oh no, something bad happened");

// Since Node-RED 0.17
this.trace("Log some internal detail not needed for normal operation");
this.debug("Log something more details for debugging the node's behaviour");

设置状态

有些节点为了表明已经설정成功,或설정有误,会有一个状态显示。
该状态也是在js文件中设置的,只需要调用status即可。
如下

this.status({fill:"red",shape:"ring",text:"disconne ccted "});

fill 상태 의 색 상
shape 상태에 대한 아이 콘
text 상태 의 텍스트

노 드 설정 사용자 정의

노 드를 만들 때 설정 파 일에 노 드의 속 성을 구성 하고 싶다면 이렇게 할 수 있습니다 .
노 드 유형 이 fiz z - node 이 고 설정 파 일에 그 색 상을 넣 으면 설정 파 일에 fiz z N ode Col or 를 구성 해야합니다 . 
사용 중 인 경우 R ED . sett ings . f izz N ode Col or 를 사용하여 액세스 합니다 .

실제 프로젝트에 이 자료를 활용하시겠습니까?

도구 센터에서 프레임 분석, CRC 검증, 장비 디버깅을 진행하거나 요청을 제출하여 선정 및 연동 제안을 받아보세요.

엔지니어 회원

이 글을 실행 가능한 디버깅 자료로 활용하세요

가입하면 고급 프레임 분석, 자료 패키지 다운로드, 코드 예제, 엔지니어링 사례, 우선 기술 지원을 이용할 수 있어 실제 프로젝트 납품에 적합합니다.

고급 도구 무제한 이용
자료 패키지와 코드 패키지
완전한 엔지니어링 사례 라이브러리
우선 기술 지원 채널

답글 작성

이메일 주소는 공개되지 않습니다. 必填项已用 * 标注