node-red学习二、nodered上下文全局变量

一、前提

Node-RED背景介绍
Node-Red是IBM公司开发的一个可视化的编程工具。它允许程序员通过组合各部件来编写应用程序。这些部件可以是硬件设备(如:Arduino板子)、Web、API(如:WebSocket in和WebSocket out)、功能函数(如:range)或者在线服务(如:email)。
Node-Red提供基于网页的编程环境。通过拖拽已定义node到工作区并用线连接node创建数据流来实现编程。程序员通过点击‘Deploy’按钮实现一键保存并执行。程序以JSON字符串的格式保存,方便用户分享、修改。
Node-Red基于Node.js,它的执行模型和Node.js一样,也是事件驱动非阻塞的。理论上,Node.js的所有模块都可以被封装成Node-Red的一个或几个node。(Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 Node.js 的包管理器 npm是全球最大的开源库生态系统。)

案例
1.设置一个 userid 为全局变量
2.提供给全局进行调用

二、步骤

2.1 设置全局变量

拉取一个 function 模块

flow.set("userid", msg.payload.userid);

在这里插入图片描述

2.2 设置完全局变量,获取全局变量

在前面的流程之后,拉取一个 function 模块

flow.get('userid') || 0

在这里插入图片描述

参考文档

官方文档

https://nodered.org/docs/user-guide/writing-functions#writing-a-function

node
node.id:功能节点的ID-已添加到0.19
node.name:功能节点的名称-添加在0.19中
node.outputCount:为功能节点设置的输出数量-在1.3中添加
node.log(..):记录一条消息
node.warn(..):记录警告消息
node.error(..):记录错误消息
node.debug(..):记录调试消息
node.trace(..):记录跟踪消息
node.on(..):注册事件处理程序
node.status(..):更新节点状态
node.send(..):发送一条消息
node.done(..):以一条消息结束
context
context.get(..) :获取节点范围的上下文属性
context.set(..) :设置节点范围的上下文属性
context.keys(..) :返回所有节点范围的上下文属性键的列表
context.flow : 和...一样 flow
context.global : 和...一样 global
flow
flow.get(..) :获取流范围的上下文属性
flow.set(..) :设置流范围的上下文属性
flow.keys(..) :返回所有流范围的上下文属性键的列表
global
global.get(..) :获取全局范围的上下文属性
global.set(..) :设置全局范围的上下文属性
global.keys(..) :返回所有全局作用域上下文属性键的列表
RED
RED.util.cloneMessage(..) :安全地克隆消息对象,以便可以重复使用
env
env.get(..) :获取环境变量
其他模块和功能
“功能”节点还使以下模块和功能可用:

Buffer-Node.jsBuffer模块
console-Node.jsconsole模块(node.log是首选的日志记录方法)
util-Node.jsutil模块
setTimeout/clearTimeout -javascript超时功能。
setInterval/clearInterval -JavaScript间隔功能。
注意:功能节点在停止或重新部署时会自动清除所有未完成的超时或间隔计时器。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 可以通过global对象来定义和访问全局变量。您可以在任何流程或节点中使用这些全局变量。在节点中可以使用msg对象的global属性来访问全局变量,如下所示: global.set("myGlobalVar", "my global value"); var myGlobalVar = global.get("myGlobalVar"); 这样就可以在不同的节点中使用同一个全局变量来传递数据。 ### 回答2: Node-RED是一个用于构建物联网应用的可视化编程工具,它基于Node.js平台,并支持使用JavaScript进行编程。在Node-RED中,我们可以使用全局变量来保存和共享数据。 全局变量在整个Node-RED的生命周期中都是可用的,并可以在不同的节点之间进行共享。使用全局变量可以方便地在不同的节点之间传递数据,同时也可以在不同的流程中进行数据的持久化。 在Node-RED中,可以使用`context.global`对象来访问和操作全局变量。通过`context`对象的`global`属性,我们可以在节点中获取和设置全局变量的值。 当我们希望在一个节点中设置一个全局变量时,可以使用`node.context().global`来设置变量的值。例如,我们可以使用以下代码将一个名为`myGlobalVariable`的全局变量设置为`100`: ``` node.context().global.set('myGlobalVariable', 100); ``` 在其他节点中,我们可以通过以下方式来获取全局变量的值: ``` var value = node.context().global.get('myGlobalVariable'); ``` 此时,变量`value`将被赋值为`100`。 需要注意的是,全局变量的作用范围是整个Node-RED实例,因此在不同的用户会话或不同的流程之间都是可见的。因此,在使用全局变量时,需要谨慎考虑并避免命名冲突或误用。同时,全局变量的使用也可能会导致系统的复杂性增加,因此应该谨慎使用,避免滥用。 总的来说,全局变量Node-RED中一种方便的机制,可以用于在节点之间传递数据和进行数据的持久化。通过`context.global`对象,我们可以在不同的节点中获取和设置全局变量的值。但是,需要注意全局变量的作用范围和使用的谨慎性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值