
来源:https://nodered.org/docs/user-guide/editor
编辑器组成与导航
- 四大区域:顶部 Header、左侧 Palette、中央 Workspace、右侧 Sidebar
- 快速键:
Ctrl/⌘-p显示/隐藏 Palette,Ctrl/⌘-Space显示/隐藏 Sidebar

来源:https://nodered.org/docs/user-guide/editor/palette/

来源:https://nodered.org/docs/user-guide/editor/sidebar
Flow流程、Tab标签 与 Subflow子流程
-
Flow/Tab:在画布上组织逻辑,每个 Tab 关注单一主题
-
Subflow:可复用 的子流程,支持参数化,适合封装采集或清洗逻辑
-- 新建子流程有两种方法如图

-- 直接新建子流程
-- 将选择部分更改为子流程
-
Link 节点:跨 Tab 编排与解耦
Deploy 部署策略
- Full:全量下发,适合首次或大改动
- Modified:仅下发变更,提高效率
- Nodes-only:仅更新节点属性,不重启连接

消息结构与路由
- 核心对象:
msg(常用msg.payload、msg.topic) - Change:赋值、删除、移动、JSONata 变换
- Switch:条件路由(阈值、匹配、表达式)
示例:温度路由与告警
导入以下 JSON 到画布,点击 Deploy,然后在 Inject 节点触发测试。
json
[
{
"id": "i1",
"type": "inject",
"z": "f1",
"name": "temp=28",
"props": [
{ "p": "payload" }
],
"payload": "{\"temperature\":28}",
"payloadType": "json",
"x": 160,
"y": 140,
"wires": [["s1"]]
},
{
"id": "s1",
"type": "switch",
"z": "f1",
"name": ">=30?",
"property": "payload.temperature",
"propertyType": "msg",
"rules": [
{ "t": ">=", "v": "30", "vt": "num" },
{ "t": "else" }
],
"checkall": "true",
"repair": false,
"x": 330,
"y": 140,
"wires": [["c1"],["d1"]]
},
{
"id": "c1",
"type": "change",
"z": "f1",
"name": "set alert",
"rules": [
{ "t": "set", "p": "msg.topic", "pt": "msg", "to": "alert", "tot": "str" },
{ "t": "set", "p": "payload", "pt": "msg", "to": "\"HIGH TEMP\"", "tot": "jsonata" }
],
"x": 500,
"y": 120,
"wires": [["d1"]]
},
{
"id": "d1",
"type": "debug",
"z": "f1",
"name": "out",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"x": 680,
"y": 140,
"wires": []
}
]
Function 节点与上下文
context:节点级状态;flow/global:跨节点/全局状态- On Start:Function 节点"On Start"面板中初始化状态(支持返回 Promise)
Function 代码示例
javascript
let counter = context.get('counter') || 0;
counter += 1;
context.set('counter', counter);
msg.payload = counter;
return msg;
On Start 初始化示例
javascript
if (context.get("counter") === undefined) {
context.set("counter", 0)
}
调试与日志
- Debug 面板:选择输出
payload或完整消息;避免过度日志 - 终端日志:使用
-v获取详细信息;结合--safe排错
powershell
node-red -v --safe
最佳实践
- 尽量使用 Change/Switch/Template 组合,减少复杂 JS
- 为主题与数据结构制定统一规范,便于路由与维护
- 对大对象或二进制流先做裁剪或分片,优化内存
- 使用 Subflow 与 Link 解耦跨页逻辑