Präambel
Wenn Sie in node-red den Knoten nicht finden, den Sie benötigen, können Sie einen Knoten anpassen, der Ihren Bedürfnissen entspricht. In früheren Artikeln habe ich kurz beschrieben, wie man einen Knoten erstellt und ein Beispiel für die Umwandlung von Groß - und Kleinschrift. Obwohl die Beispiele einfach sind, können Sie die Schritte zum Erstellen eines benutzerdefinierten Knoten und die Komponenten eines Knoten verstehen. Dieser Artikel konzentriert sich auf die js-Datei des benutzerdefinierten Knoten. Erläutern Sie die API und andere Konfigurationselemente. Aus den vorherigen Artikeln wissen wir, dass die Node-JS - Datei eine Kerndatei für einen Knoten ist, die Konfigurationsparameter berechnet, die Geschäftslogik verarbeitet und Daten nachgelagerten Daten sendet. Schauen wir uns unten an.
Benutzerdefinierte Knoten JavaScript-Dateien
Knoten-Builder
Alle Knoten sind Funktionen, die von einem Konstruktor generiert werden, und sind eine neue Instanz der Erstellung. Diese Funktion wird in der Laufzeit registriert,
Diese Funktion existiert im Stream-Editor, indem sie ein Konfigurationsobjekt festlegt.
In dieser Funktion ist das erste, was wir tun, ein Anruf.RED.nodes.createNode- Funktion aufzurufen, um die Eigenschaften zu serialisieren, die von anderen Knoten geteilt werden. Danach ist
Dann kann man den Businesscode schreiben.
wie folgt
Akzeptieren Sie Informationen wie folgt
Der Knoten akzeptiert Informationen, die vom vorgelagerten Knoten über den gesamten Strom gesendet werden, indem er ein EreignisinputEreignisse, die Informationen über den gesamten Strom von vorgelagerten Knoten erhalten. Bei der Registrierung eines Ereignisses gibt es in der Rückruffunktion des Ereignisses zwei Parameter: MSG und SEND, wobei MSG die vorgelagerten Daten ist. Send ist eine Funktion, die nach unten weitergegeben wird. Die dritte Funktion done ist eine Funktion, die der Knoten aufruft, nachdem er die Geschäftslogik verarbeitet hat.
Beispiel
function SampleNode(config) {
RED.nodes.createNode(this,config);
// node-specific code goes here
}
RED.nodes.registerType("sample",SampleNode);Akzeptieren von Informationen
Knoten durch Registrierung einesinputEreignisse, die Informationen über den gesamten Strom von vorgelagerten Knoten erhalten. Bei der Registrierung eines Ereignisses gibt es in der Rückruffunktion des Ereignisses zwei Parameter: MSG und SEND, wobei MSG die vorgelagerten Daten ist. Send ist eine Funktion, die nach unten weitergegeben wird. Die dritte Funktion done ist eine Funktion, die der Knoten aufruft, nachdem er die Geschäftslogik verarbeitet hat.
Beispiel
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();
}
});Nachrichten senden
Das Senden von Informationen in einem benutzerdefinierten Knoten nach unten ist sehr einfach
Man muss nur die Send-Funktion verwenden, wie folgt
var msg = { payload:"hi" }
this.send(msg);Wenn ein Knoten Informationen in einem Eingabeereignis nach unten senden möchte, kann man dies tun
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();
}
});In der Rückruffunktion des Eingabeereignisses gibt es drei Parameter, der erste ist die akzeptierte Information, der zweite ist die Send-Funktion,
Die dritte Funktion ist die done-Funktion. Es gibt unterschiedliche Nutzungsszenarien.
Wenn Sie mehrere Parameter nach unten eingeben möchten, können Sie so schreiben.
this.send([ msg1 , msg2 ]);
this.send([ [msgA1 , msgA2 , msgA3] , msg2 ]);Journal-Ereignis
schreiben, um das Protokoll in einem benutzerdefinierten Knoten zu drucken, rufen Sie einfach die Methoden log, warn usw. unter this. Das Protokoll wird in der Konsole gedruckt.
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");Status festlegen
Einige Knoten haben eine Statusanzeige, um zu zeigen, dass sie erfolgreich oder falsch konfiguriert wurden.
Dieser Status wird auch in der JS-Datei festgelegt und muss nur status aufgerufen werden.
wie folgt
this.status({fill:"red",shape:"ring",text:"disconnected"});Die Farbe des fill-Status
shape-Status - Symbol
text-Status - Text
Benutzerdefinierte Knoten-Einstellungen
Wenn Sie beim Erstellen eines Knoten eine Eigenschaft des Knoten in die Setting-Datei konfigurieren möchten, können Sie dies tun.
Wenn Sie Ihre Art von Knoten haben,fizz-nodehaben undcolorin die Einstellungsdatei legen, müssen Sie in der EinstellungsdateifizzNodeColor。
so konfigurieren, dass Sie ihn verwenden können.RED.settings.fizzNodeColorBesuchen zu kommen.
Antwort veröffentlichen