Node-RED提供了很多Node,这篇文章介绍一下定制化Node的使用方法。

事前准备

以容器方式启动Node-RED服务,启动命令如下所示:

启动命令:docker run -it -p 1880:1880 -v $PWD/data:/data -e TZ=Asia/Shanghai --name nodered -d nodered/node-red:1.0.4

定制化Node的使用方式

定制化Node相关的文件主要有如下相关:

  • HTML文件:Node的种类说明以及显示相关的信息 (必须)
  • JS文件:Node的功能实现 (必须)
  • package.json:因为Node-RED仍然是使用npm进行包的管理,需要符合相应的规范 (可选)

部署方式

最简单的方式莫过于直接将相应的HTML文件和JS文件直接放入如下目录或者其子目录中:

  • 放置目录:node-red/node_modules/@node-red/nodes/

也可以将自己的组件使用npm进行打包,然后在node-red中进行安装,本文中将直接使用最简单的方式进行验证和说明。

事前准备

Node示例:使用一个可以进行小写转化的定制化Node示例,这是Node-RED的一个官方示例,基本不做改动,只是为了结果显示清晰,将其种类从function设定为common,这样截图对比的时候不用拖动了。

HTML文件内容

liumiaocn:common liumiao$ cat 10-lower-case.html
<script type="text/javascript">RED.nodes.registerType('lower-case',{category: 'common',color: '#a6bbcf',defaults: {name: {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="icon-tag"></i> Name</label><input type="text" id="node-input-name" placeholder="Name"></div>
</script><script type="text/html" data-help-name="lower-case"><p>A simple node that converts the message payloads into all lower-case characters</p>
</script>
liumiaocn:common liumiao$

代码说明:上述内容完全使用官方内容,只是将category的类别从function改为了common。注意名称命令是为了排序。

JS文件内容

liumiaocn:common liumiao$ cat 10-lower-case.js
module.exports = function(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);});}RED.nodes.registerType("lower-case",LowerCaseNode);
}
liumiaocn:common liumiao$

代码说明:整个功能只有msg.payload.toLowerCase();是最为主要的,可以看到是将payload的结果直接使用toLowerCase函数进行转化,所以当payload不是string类型或者为空时可能会出错,请注意这只是一个官方示例用于进行定制化Node执行的说明示例。

部署定制化Node

本文示例中将上述名为lower-case的Node放至common种类中,首先进入到Node-RED的容器中:

liumiaocn:~ liumiao$ docker exec -it nodered sh
~ $ cd ~/node_modules/@node-red/nodes/core/common
~/node_modules/@node-red/nodes/core/common $ ls
20-inject.html    21-debug.js       25-catch.html     25-status.js      90-comment.html   98-unknown.js
20-inject.js      24-complete.html  25-catch.js       60-link.html      90-comment.js     lib
21-debug.html     24-complete.js    25-status.html    60-link.js        98-unknown.html
~/node_modules/@node-red/nodes/core/common $

可以看到其在页面上的显示顺序主要是靠前面的两位数字,所以这里我们也如法炮制,将事前准备的内容放置于此:

~/node_modules/@node-red/nodes/core/common $ vi 10-lower-case.html
~/node_modules/@node-red/nodes/core/common $ vi 10-lower-case.js
~/node_modules/@node-red/nodes/core/common $ ls
10-lower-case.html  20-inject.js        24-complete.html    25-catch.js         60-link.html        90-comment.js       lib
10-lower-case.js    21-debug.html       24-complete.js      25-status.html      60-link.js          98-unknown.html
20-inject.html      21-debug.js         25-catch.html       25-status.js        90-comment.html     98-unknown.js
~/node_modules/@node-red/nodes/core/common $

这样部署已经完成,接下来就可以重启并确认结果了

结果确认

  • 重启Node-RED容器
~/node_modules/@node-red/nodes/core/common $ exit
liumiaocn:~ liumiao$ docker restart nodered
nodered
liumiaocn:~ liumiao$
  • 结果确认
    可以在左侧的common类别中的第一个即可看到我们新加的名称为lower case的Node了

Node功能确认

根据代码我们知道,这个Node实现的功能就是toLowerCase,我们创建一个flow来进行功能确认。

缺省方式创建如下三个节点并进行连接和部署,执行结果如下所示

原因是因为Input的数据的类型,这个Node提供的功能就是需要其payload后可以使用toLowerCase函数,这里我们将其改为string即可

重新部署再次执行,可以看到正常动作

但是小写转化的功能并没有确认,改一下字符串的内容

重新部署再次执行,就可以看到被转化为小写字符的输出结果了

Node-RED使用指南:22:定制化Node的使用方法相关推荐

  1. Node.js 指南(Docker化Node.js Web应用程序)

    Docker化Node.js Web应用程序 此示例的目的是向你展示如何将Node.js应用程序放入Docker容器中,该指南旨在用于开发,而不用于生产部署,本指南还假设你有一个有效的Docker安装 ...

  2. 定制化chromium的修改方法

    由于chromium的代码量很大,且版本也是更新较快,很难短时间内消化吸收,主要方法:通过 cs.chromium.org 来查找关键字,修改完成后需要整体编译. 本次修改大都是按照版本62.0.32 ...

  3. 如何使用ESP32开发定制化美容仪器界面

    在当今的美容行业中,美容仪器已经成为了一个不可或缺的部分.随着技术的发展和市场的需求,许多美容仪器制造商都开始关注如何更好地定制化自己的产品,以满足消费者的需求.在这样的背景下,使用单片机ESP32来 ...

  4. Allure定制化标签(用例等级\项目描述\模块名称\缺陷连接\定义链接\添加附件等)

    allure官方文档 http://allure.qatools.ru/ 一.allure定制化标签 示例1:演示了基本allure定制化标签的使用方法 1.test_allure_example_0 ...

  5. 《写给PHP开发者的Node.js学习指南》一2.2 预定义的PHP变量

    本节书摘来自异步社区<写给PHP开发者的Node.js学习指南>一书中的第2章,第2.1节,作者[美]Daniel Howard,更多章节内容可以访问云栖社区"异步社区" ...

  6. 《Node.js开发指南》书评汇总

    刚查了下库存,发现订阅<Node.js开发指南>的读者大增,这是为什么呢?看了下近期本书在豆瓣的评论,口碑很好,现将豆瓣的书评汇总如下: ------------------------- ...

  7. nodec mysql_Node.js 连接 MySQL 并进行数据库操作 –node.js 开发指南

    Node.js是一套用来编写高性能网络服务器的JavaScript工具包 通常在NodeJS开发中我们经常涉及到操作数据库,尤其是 MySQL ,作为应用最为广泛的开源数据库则成为我们的首选,本篇就来 ...

  8. Node.js 连接 MySQL 并进行数据库操作 –node.js 开发指南

    Node.js是一套用来编写高性能网络服务器的JavaScript工具包 通常在NodeJS开发中我们经常涉及到操作数据库,尤其是 MySQL ,作为应用最为广泛的开源数据库则成为我们的首选,本篇就来 ...

  9. 《node.js开发指南》读后感

    <node.js开发指南>这部只有180多页的书,我花了一个多月的业余时间算是粗略看完了.中间因为公司项目的加班,中断了几次.大大拖累进度,现在空出来时间,写一点自己的小小感想吧. 先从缺 ...

最新文章

  1. linux mentohust dhcp,MentoHUST的使用教程详解
  2. Android OpenGL ES 离屏渲染(offscreen render)
  3. [博客..配置?]博客园美化
  4. Android UI 优化——使用HierarchyViewer工具
  5. 无法打开登录 'ASPState' 中请求的数据库。登录失败。
  6. 苹果Safari中保存的密码如何导入Chrome浏览器?
  7. 三菱fx3uplc恢复出厂设置_三菱plc fx3u解密方法与步骤
  8. OpenCV图像处理----图像的二值化
  9. QT与游戏手柄测试(数据与UI相连,ui界面作出反应)
  10. 安装WIN10系统时“谁将会使用这台电脑”输入卡死状态的问题
  11. 用Websocket聊天完整demo,做笔记用,各位大佬多多指教
  12. DRV8833真值表
  13. Android中AlarmManager的使用
  14. 京东实现自动账号密码登录;自动将购物车选中商品下单购买。京东在线抢购
  15. python怎样执行curl命令_如何使用python执行curl命令
  16. win7右键新建菜单删减与排序
  17. Java Nio 之高级搬砖工(FileChannel) 一
  18. 【Tools】PDF编辑软件-pdfelement 6.8 官网文件中文+破解版本
  19. 如何升级Symbian Carbide C++的GCC编译器版本
  20. 锤子科技官方首页的特效

热门文章

  1. 张三吃饭——竟吃出了HTTP中GET和POST的区别?
  2. 区块链创业公司解散后,我去美团送外卖了 | 链人生
  3. 【收藏】JavaWeb项目详解:水果库存后台管理系统(servlet+thymeleaf+mysql)
  4. 你知道icp许可证与edi许可证的区别吗
  5. 智能骨科图像方向,按照期刊进行的文献整理
  6. poi-tl 插入图表的时候遇到的问题及解决方法
  7. Arm加入龙蜥社区并成为理事单位,国内开源再添国际新力量
  8. OpenCV - 计算相机和视频的帧速率FPS
  9. 树莓派科学小实验4B--07_继电器
  10. Xinetd服务的安装与配置【转载】