本文参考官方网站示例
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 文件