架构图
核心知识点
基本功能
本篇会介绍6项常用的子模块,并适时使用案例来介绍它们的功能以及再使用上的一些细节
inject
共通模块最常用到的子模块之一,作为输入用途,可以自行选择payload类型
inject模块
创立inject节点时点击模块可以进入设定,选单中主要分为5个要素:
- 模块名称
- 为inject设定名称
- 物件属性
- 预设为payload
- 可以自行添加属性
- 物件属性资料类型
- 指定属性类型,包含常见的字串、数字、布林、json等
- 主题
- 指定topic名
- 选择输入机制
- 手动输入模式
- 循环输入模式
- 指定时间输入模式
inject模块设定
debug
输出模块,用来将输入结果显示在指定视窗上(通常是除错视窗),点击可以进入设定选单
debug模块
设定选单主要包含:
debug模块设定
- 输出属性
- 预设payload
- 亦可指定已存在的属性
- 选择输出窗口
- 选择输出视窗
- 模块名称
- debug模块名称
function
使用javascript编写的函式模块,可以提供使用者自定义的功能,我们可以对传入的物件属性进行处理,透过返回msg物件,后续的模块可以得到加工后的结果
function模块
例如我编写一个用来判断result值是否为真的模块,如果成立便新增一个新的属性note,并给予它一个值
1 | javascript=复制代码if(msg.payload.result == true){ |
或者编写一个判断属性长度的模块
1 | javascript=复制代码var new_msg = {payload:msg.payload.length} |
一样点击function模块进入设定,在函数栏位编写自定义的程式码就可以了
编写function模块
change
改变物件属性类型,可以进行增、删、修改、转移等操作
change模块
点击模块后可以进入设定选单,change模块的重点在操作指令
change模块设定
- 模块名称
- change模块名称
- 操作指令
- 设定
- 将属性设定为指定值
- 也可以用来新增一个属性,并给值
- 修改
- 搜寻特定值然后取代
- 删除
- 删除物件中指定属性
- 转移
- 将物件中的属性值转移到另一个属性上
- 设定
- 物件属性
- 跟上面介绍得差不多,用来指定属性,预设是payload
switch
这是一个很有趣的模块,它类似程式中的switch语句,可以用来当作流程控制
1 | c=复制代码switch(msg.payload){ |
switch模块
选单中4个重点,分别对应switch的功能
switch模块设定
- 属性
- switch(var)
- 属性栏位相当于设定var
- 判断类型
- 相当于条件判断子
- 判断值指定值
- 依照不同判断子填入的参数
- case x:
- 相当于x的功用
其实不只常见的判断子,Node-RED提供非常多的判断模式供使用者使用,这些就留给大家慢慢摸索
switch模块判断子选择
template
template模块可以提供使用者自定HTML模板
switch模块设定
模板内可以输入指定的HTML格式,举个例子来看看这个模块的功用,把以下html程式码写进template模块内
1 | htmlembedded=复制代码<!DOCTYPE html> |
在侧边拦栏位找到httpin模块,拖曳进来并起双击设定
- 请求方法
- 选择http协议的GET method
- URL可以自订,这裡设定绝对路径/hello
- 名称表示模块名,可有可无
httpin模块设定
在侧边栏位找到将http response模块,拖曳进来并将template尾部连上它。完成后应该会如下图所示
连接模块
最后然后按下deploy键,在网址栏为输入url 127.0.0.1:1880/hello就可以看到我们设定的html内容
网页显示
实际案例练习
实现目标:
- 输入一串json字串,将该字串转换成json物件,例如
1 | json=复制代码{"id":"device0","result":true} |
- 若判断result为true,则新增一个属性note,并且定义它的内容为test字串,并输出json物件
- 若判断result为false,则原封不动输出json物件
方法一: 利用function
方法一
- 首先加入两个inject模块,payload类型均设定为字串,字串格请参考上面json案例
- 在解析栏位选择json模块,双击并设定操作栏位为JSON字串与物件互转
- 选择function模块,然后输入以下程式码
1 | javascript=复制代码if(msg.payload.result == true){ |
- 拉取debug模块,并且把上述模块都连接起来
方法二: 利用change与switch
方法二
- 首先加入两个inject模块,payload类型均设定为字串,字串格请参考上面json案例
- 在解析栏位选择json模块,双击并设定操作栏位为JSON字串与物件互转
- 选择switch模块,设定payload.result的判断式
设定判断式
- 若result为真,则从输出端口一输出,并且连接上change模块,利用设定操作把payload.note设定成字串”test”
设定change模块
- 拉取debug模块,并且把上述模块都连接起来
输出结果
手动注入inject模块,经过测试可以发现右侧除错式窗成功打印我们要的结果,两种方法接测试正确
输出结果
本文转载自: 掘金