官网:创建节点 : Node-RED (nodered.org)
一,创建示例节点
1、创建目录
1)、说明
创建一个存放代码文件的目录,并在目录下创建下面文件
序号 | 文件 | 说明 |
1 | package.json | package.json文件是一个标准的用于描述NodeJs模块的文件,用于将其打包为一个npm模块 |
2 | lower-case.js | 用于定义节点的功能 |
3 | lower-case.html | 用于定义节点的属性、编辑对话窗口和帮助内容 |
2)、创建目录
1,创建文件夹
在node-red-app\node_modules\@node-red\nodes\core目录下创建自定义节点目录【mynode】
2,创建package.json
根据官方建议在自定义目录下运行npm init命令可以通过向导的方式生成该文件,
3、创建javaScript文件
在建自定义节点目录mynode目录下创建javaScript文件【lower-case.js】
【lower-case.js】代码如下:
module.exports = function (RED) {
function lowerCaseNode(n) {
//调用RED.nodes.createNode函数来初始化所有节点共享的功能。
RED.nodes.createNode(this, n);
//节点自身的属性
this.property = n.property;
//初始化this
var node = this;
// 节点在input事件从流中的上游节点接收消息。
node.on("input", function (msg, send, done) {
//将msg.payload的字母小写
msg.payload = msg.payload.toLowerCase();
// 如果节点位于流的开头,并响应外部事件生成消息,则应使用send函数在Node对象上:
node.send(msg);
});
}
RED.nodes.registerType("lower-case",lowerCaseNode);
}
4、创建html文件
在建自定义节点目录mynode目录下创建html文件【lower-case.html】
category
:(string) 节点所在的调色板类别defaults
:(object) 节点的可编辑属性。credentials
:(object) 节点的凭据属性。inputs
:(数字)节点有多少个输入,要么是 。0
1
outputs
:(数字)节点有多少个输出。可以是或更多。0
color
:(string) 要使用的背景颜色。paletteLabel
:(string|function) 要在调色板中使用的标签。label
:(string|function) 要在工作区中使用的标签。labelStyle
:(string|function) 要应用于标签的样式。inputLabels
:(string|function) 可选标签,用于将鼠标悬停在节点的输入端口时添加。outputLabels
:(string|function) 将鼠标悬停在节点的输出端口上时要添加的可选标签。icon
:(string) 要使用的图标。align
:(string) 图标和标签的对齐方式。button
:(对象)在节点的边缘添加一个按钮。oneditprepare
:(函数)在构建编辑对话框时调用。请参阅自定义编辑行为。oneditsave
:(函数)在编辑对话框正常时调用。请参阅自定义编辑行为。oneditcancel
:(函数)在取消编辑对话框时调用。请参阅自定义编辑行为。oneditdelete
:(函数)在按下配置节点的编辑对话框中的删除按钮时调用。请参阅自定义编辑行为。oneditresize
:(函数)在调整编辑对话框大小时调用。请参阅自定义编辑行为。onpaletteadd
:(函数)在将节点类型添加到调色板时调用。onpaletteremove
:(函数)在从调色板中删除节点类型时调用。
【lower-case.html】代码如下:
<!-- 向编辑器注册的主节点定义 -->
<script type="text/javascript">
RED.nodes.registerType('lower-case', {
category: 'function',
color: '#a6bbcf',
defaults: {
name: {value: ""},
// 自定义节点属性
property:{value:""}
},
inputs: 1,
outputs: 1,
icon: 'file.png',
label: function () {
return this.name || 'lower-case';
}
});
</script>
<!-- 编辑对话框 -->
<script type="text/html" data-template-name="lower-case">
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> 名称</label>
<input type="text" id="node-input-name" placeholder="名称"/>
</div>
<!-- 填写节点属性 -->
<div class="form-row">
<label for="node-input-property"><i class="fa fa-ellipsis-h"></i> 属性</label>
<input type="text" id="node-input-property" placeholder="属性"/>
</div>
</script>
<!-- 帮助文本 -->
<script type="text/html" data-help-name="lower-case">
<p>当前节点主要功能是实现将message的payloads转换为小写字符,并传入一下节点。</p>
</script>
5、安装自定义模块
本例中我的自定义模块所在的本地路径是D:\work\JavaTeam\workspace\IdeaProjects\node-red\packages\node_modules@node-red\nodes\core\mynode,大家可以改为自己本地的路径
npm install D:\work\JavaTeam\workspace\IdeaProjects\node-red\packages\node_modules\@node-red\nodes\core\mynode