Node-RED学习心得(操作篇)

架构图

基本功能

本篇会介绍6项常用的子模块,并适时使用案例来介绍它们的功能以及再使用上的一些细节

inject

共通模块最常用到的子模块之一,作为输入用途,可以自行选择payload类型

创立inject节点时点击模块可以进入设定,选单中主要分为5个要素:

模块名称为inject设定名称物件属性预设为payload可以自行添加属性物件属性资料类型指定属性类型,包含常见的字串、数字、布林、json等主题指定topic名选择输入机制手动输入模式循环输入模式指定时间输入模式

debug

输出模块,用来将输入结果显示在指定视窗上(通常是除错视窗),点击可以进入设定选单

设定选单主要包含:

输出属性预设payload亦可指定已存在的属性选择输出窗口选择输出视窗模块名称debug模块名称

function

使用javascript编写的函式模块,可以提供使用者自定义的功能,我们可以对传入的物件属性进行处理,透过返回msg物件,后续的模块可以得到加工后的结果

例如我编写一个用来判断result值是否为真的模块,如果成立便新增一个新的属性note,并给予它一个值

if(msg.payload.result == true){    msg.payload.note = "test"}return msg;

或者编写一个判断属性长度的模块

var new_msg = {payload:msg.payload.length}msg.payload = new_msgreturn msg;

一样点击function模块进入设定,在函数栏位编写自定义的程式码就可以了

change

改变物件属性类型,可以进行增、删、修改、转移等操作

点击模块后可以进入设定选单,change模块的重点在操作指令

模块名称change模块名称操作指令设定将属性设定为指定值也可以用来新增一个属性,并给值修改搜寻特定值然后取代删除删除物件中指定属性转移将物件中的属性值转移到另一个属性上物件属性跟上面介绍得差不多,用来指定属性,预设是payload

switch

这是一个很有趣的模块,它类似程式中的switch语句,可以用来当作流程控制

switch(msg.payload){        case 1:        /*do something*/        break;                case 2:        /*do something*/        break;                ...}

选单中4个重点,分别对应switch的功能

属性switch(var)属性栏位相当于设定var判断类型相当于条件判断子判断值指定值依照不同判断子填入的参数case x:相当于x的功用

其实不只常见的判断子,Node-RED提供非常多的判断模式供使用者使用,这些就留给大家慢慢摸索

template

template模块可以提供使用者自定HTML模板

模板内可以输入指定的HTML格式,举个例子来看看这个模块的功用,把以下html程式码写进template模块内

<!DOCTYPE html><html>    <head>        <meta charset="utf-8">        <title>Hello~</title>    </head>    <body>            <h2>This is Node-RED<h2>    </body></html>

在侧边拦栏位找到httpin模块,拖曳进来并起双击设定

请求方法选择http协议的GET methodURL可以自订,这里设定绝对路径/hello名称表示模块名,可有可无

在侧边栏位找到将http response模块,拖曳进来并将template尾部连上它。完成后应该会如下图所示

最后然后按下deploy键,在网址栏为输入url 127.0.0.1:1880/hello就可以看到我们设定的html内容

实际案例练习

实现目标:

输入一串json字串,将该字串转换成json物件,例如
{"id":"device0","result":true}{"id":"device1","result":false}
若判断result为true,则新增一个属性note,并且定义它的内容为test字串,并输出json物件若判断result为false,则原封不动输出json物件

方法一: 利用function

首先加入两个inject模块,payload类型均设定为字串,字串格请参考上面json案例在解析栏位选择json模块,双击并设定操作栏位为JSON字串与物件互转选择function模块,然后输入以下程式码
if(msg.payload.result == true){    msg.payload.note = "test"}return msg;
拉取debug模块,并且把上述模块都连接起来

方法二: 利用change与switch

首先加入两个inject模块,payload类型均设定为字串,字串格请参考上面json案例在解析栏位选择json模块,双击并设定操作栏位为JSON字串与物件互转选择switch模块,设定payload.result的判断式
若result为真,则从输出端口一输出,并且连接上change模块,利用设定操作把payload.note设定成字串"test"
拉取debug模块,并且把上述模块都连接起来

输出结果

手动注入inject模块,经过测试可以发现右侧除错式窗成功打印我们要的结果,两种方法接测试正确


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章