自定义node-red节点 超级详细示例解读

 

  本文参考官方网站示例

  1. 如果什么都不懂,参考我的package.json 。

  2. 首先我们必须在 package.json 中添加 node-red 的部分 

{
  "name": "node-red-lower-case",
  "version": "1.0.0",
  "description": "自定义node-red节点 小写转化",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "node-red" : {
        "nodes": {
            "lower-case": "lower-case.js"
        }
  }
}

  3.  除了这个,项目中还必须包含一个  js 和html 文件,也就是上面指示的lower-case.js

 lower-case.js 文件

module.exports = function(RED) { // RED  可以对node-red 进行访问
    function LowerCaseNode(config) {
        RED.nodes.createNode(this,config); // 节点本身就会对调用该函数,包括节点输入的属性
        var node = this;
        node.on('input', function(msg) { // 对消息进行处理  消息到达节点时,事件侦听就会启动,进行消息转化
            msg.payload = msg.payload.toLowerCase();
            node.send(msg);  // 输出的消息   如果msg为空则不发任何消息  也可以进行多个发送,node.send([msg1,msg2])
        });
    }
    RED.nodes.registerType("lower-case",LowerCaseNode);
}

 lower-case.html 文件





 


上面是最简单的用法,现在我们使用复杂的用法进行升级改造,包括tab 的使用  简单示范本文参考mysql 的使用

   中使用的图标库  https://fontawesome.com/v4.7.0/icons/

 其中  RED.nodes.registerType  注册的节点名称不要重名,负责会出现异常情况

重要的就是   节点中,相当于也可以创建节点,但是这个节点也是需要进行注册的,也就是说其实这个节点,仍然是在RED 中,如下图红色部分

 

 

 

js  文件

 

module.exports = function(RED) { // RED  可以对node-red 进行访问
    function LowerCaseNode(config) {
        RED.nodes.createNode(this,config); // 节点本身就会对调用该函数,包括节点输入的属性
        var node = this;
        node.on('input', function(msg) { // 对消息进行处理  消息到达节点时,事件侦听就会启动,进行消息转化
            msg.payload = msg.payload.toLowerCase();
            // 获取所有的值
            var mydb = RED.nodes.getNode(config.mydb); // 获取节点  也就是这个节点里面包含的节点
            msg.payload = "name =" +  config.name +"{"+ "host="+ mydb.host +"port="+ mydb.port + "user="+ mydb.credentials.user + "password="+ mydb.credentials.password + "}"; 
            
            node.send(msg);  // 输出的消息   如果msg为空则不发任何消息  也可以进行多个发送,node.send([msg1,msg2])
        });
    }
    function MySQLNode(n) {
        RED.nodes.createNode(this,n);
        this.host = n.host;
        this.port = n.port;
        this.tz = n.tz || "local";

        this.connected = false;
        this.connecting = false;
            
        this.dbname = n.db;
        this.setMaxListeners(0);
        var node = this;
    }
   RED.nodes.registerType("MySQLdatabase1",MySQLNode, {
        credentials: {
            user: {type: "text"},
            password: {type: "password"}
        }
    });
    RED.nodes.registerType("lower-case",LowerCaseNode);
}

 

 

 

html 文件

 













 

 

 

转载于:https://www.cnblogs.com/chengyangyang/p/11169046.html

你可能感兴趣的:(自定义node-red节点 超级详细示例解读)